1

我正在研究 ESA 的实现,我更改了其中一个 java 文件,使用命令对其进行了编译

javac -cp lib/*:esalib.jar ./src/clldsystem/esa/ESAAnalyzer.java

并将.class文件粘贴到.jar文件中对应的目录(esalib.jar/clldsystem/esa)。我也将名称更改为原始对应的 .class 文件。

接下来,我有一个使用命令的 python 脚本

java -cp lib/*:esalib.jar clldsystem.esa.ESAAnalyzer param1 param2

但是在运行 python 脚本时,该命令在用作以下命令时运行良好:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer computer apple'
args=shlex.split(x)
p=subprocess.Popen(args)
p.wait()

但是给出了一个错误:当用作时找不到或加载主类:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer word1 word2'
args=x.split()
p=subprocess.Popen(args)
p.wait()

在同一个脚本中。我正在从文件中读取变量 word1 和 word2。为什么它会在一个地方正常工作而在另一个地方出错?我已经使用我从文件中正确读取的打印语句进行了检查,所以这一定不是问题。谢谢

以下是发生的事情的详细信息:

nishant@nishant-Inspiron-1545:~/esalib$ python test.py
['java', '-cp', 'lib/*:esalib.jar', 'clldsystem.esa.ESAAnalyzer', 'bottle', 'apple']
index loaded to memory
bottl
appl
vector 1 dimensions: 1782
vector 2 dimensions: 2766
0.024397644631615697
beach
['people', 'sand', 'desert', 'snow']
['java', '-cp', '"lib/*:esalib.jar"', 'clldsystem.esa.ESAAnalyzer', 'word1', 'word2']
Error: Could not find or load main class clldsystem.esa.ESAAnalyzer
beach 
people
['java', '-cp', '"lib/*:esalib.jar"', 'clldsystem.esa.ESAAnalyzer', 'word1', 'word2']
Error: Could not find or load main class clldsystem.esa.ESAAnalyzer
beach
sand

等等每次迭代

4

1 回答 1

1

这有效:

x='java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer %s %s' % (word1, word2)
args=shlex.split(x)
print args
p=subprocess.Popen(args)
p.wait()
于 2013-06-17T08:23:02.853 回答