使用 lua posix execp 执行 java 程序
executing java program with lua posix execp
我在使用 lua 的 posix.execp() 函数在子进程中执行 java 程序时遇到问题。我希望能够创建管道并让进程相互通信。因此,为什么我要使用 luaposix 。出于某种原因,它将所有正斜杠解释为类路径中的句点。我不完全确定我是否设置正确。我想知道我在给 execp() 函数的 table 中是否做错了什么。
argjava={}
argjava[0]="java"
argjava[1]="-cp"
argjava[2]="/home/joeA/tree-lstm/lib/:'
argjava[3]="/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser.jar:"
argjava[4]="/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser-3.5.1-models.jar"
argjava[5]="ConstituencyParser"
argjava[6]="-tokenpath"
argjava[7]="tokens.tmp"
argjava[8]="-parentpath"
argjava[9]="parents.tmp"
argjava[10]=nil
posix.execp("java",argjava)
我想让它看起来像这样:
java -cp /home/joeA/tree-lstm/lib/:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser.jar:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser-3.5.1-models.jar ConstituencyParse -tokpath tokens.tmp -parentpath parents.tmp
这是出现的错误:
Error: Could not find or load main class .home.joeA.tree-lstm.lib.stanford-parser.stanford-parser.jar:
argjava
中的每个值几乎肯定会成为结果命令行中的独立参数。
所以你不能像那样将 -cp
的参数部分分开,否则它最终会变成三个参数,其中只有一个是 -cp
的参数,另外两个是要加载的东西(因此出错)。
尝试将路径和 jar 放在 table 中的单个 string/value 中。
argjava={
[0]="java",
"-cp",
"/home/joeA/tree-lstm/lib/:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser.jar:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser-3.5.1-models.jar",
"ConstituencyParser",
"-tokenpath",
"tokens.tmp",
"-parentpath",
"parents.tmp",
}
我在使用 lua 的 posix.execp() 函数在子进程中执行 java 程序时遇到问题。我希望能够创建管道并让进程相互通信。因此,为什么我要使用 luaposix 。出于某种原因,它将所有正斜杠解释为类路径中的句点。我不完全确定我是否设置正确。我想知道我在给 execp() 函数的 table 中是否做错了什么。
argjava={}
argjava[0]="java"
argjava[1]="-cp"
argjava[2]="/home/joeA/tree-lstm/lib/:'
argjava[3]="/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser.jar:"
argjava[4]="/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser-3.5.1-models.jar"
argjava[5]="ConstituencyParser"
argjava[6]="-tokenpath"
argjava[7]="tokens.tmp"
argjava[8]="-parentpath"
argjava[9]="parents.tmp"
argjava[10]=nil
posix.execp("java",argjava)
我想让它看起来像这样:
java -cp /home/joeA/tree-lstm/lib/:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser.jar:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser-3.5.1-models.jar ConstituencyParse -tokpath tokens.tmp -parentpath parents.tmp
这是出现的错误:
Error: Could not find or load main class .home.joeA.tree-lstm.lib.stanford-parser.stanford-parser.jar:
argjava
中的每个值几乎肯定会成为结果命令行中的独立参数。
所以你不能像那样将 -cp
的参数部分分开,否则它最终会变成三个参数,其中只有一个是 -cp
的参数,另外两个是要加载的东西(因此出错)。
尝试将路径和 jar 放在 table 中的单个 string/value 中。
argjava={
[0]="java",
"-cp",
"/home/joeA/tree-lstm/lib/:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser.jar:/home/joeA/tree-lstm/lib/stanford-parser/stanford-parser-3.5.1-models.jar",
"ConstituencyParser",
"-tokenpath",
"tokens.tmp",
"-parentpath",
"parents.tmp",
}