0

我正在运行一个 python 脚本,它本质上是关于信息检索的。由于脚本的一次执行需要很长时间,我想运行并行脚本。我在脚本中使用以下代码调用 java 程序:

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()

它工作正常。为了不混淆输入文件和临时结果文件,我在包含脚本的文件夹中创建了一个新文件夹。我现在正在尝试从新文件夹中运行脚本的副本。我将代码更新为:

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()

但这给出了一个错误:

Error: Could not find or load main class ...clldsystem.esa.ESAAnalyzer

我该如何解决这个问题?

4

1 回答 1

0

问题是你把..点放在了错误的地方。

clldsystem.esa.ESAAnalyzer是包含main()要执行的方法的 Java 类javajava尝试clldsystem.esa.ESAAnalyzer通过查看它从类路径中指定的 jar 加载的类来查找-cp

所以尝试更换

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

具有以下内容:

java -cp "../lib/*:../esalib.jar" clldsystem.esa.ESAAnalyzer
于 2013-07-12T01:08:22.650 回答