【问题标题】:executing java program with lua posix execp使用 lua posix execp 执行 java 程序
【发布时间】:2016-01-29 22:42:06
【问题描述】:

我在使用 lua 的 posix.execp() 函数在子进程中执行 java 程序时遇到问题。我希望能够创建管道并让进程相互通信。因此,我为什么要使用 luaposix 。出于某种原因,它会将所有正斜杠解释为类路径中的句点。我不完全确定我是否设置正确。我想知道我在提供给 execp() 函数的表中是否做错了什么。

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 中的每个值都成为命令行上java 的独立参数。因此,您不能像那样将参数的各个部分拆分为-cp。尝试将路径和罐子放在单个字符串/值中。
  • 行得通!我没有意识到 argjava 中的每个元素都变得独立了。

标签: java process lua fork posix


【解决方案1】:

argjava 中的每个值几乎肯定会成为生成的命令行上的一个独立参数。

因此,您不能像那样将参数的各个部分拆分为 -cp,否则它最终会成为三个参数,其中只有一个是 -cp 的参数,另外两个是要加载的内容(因此错误)。

尝试将路径和罐子放在表中的单个字符串/值中。

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",
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2012-09-07
    • 2013-06-24
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多