我正在运行一个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
我怎么能解决这个问题?
答案 0 :(得分:0)
问题在于您将..
点放在错误的位置。
clldsystem.esa.ESAAnalyzer
是包含main()
方法的Java类,由java
执行。 java
尝试通过clldsystem.esa.ESAAnalyzer
查看从类路径中指定的jar加载的类来查找-cp
。
所以尝试替换
java -cp "../lib/*:esalib.jar" ../clldsystem.esa.ESAAnalyzer
以下内容:
java -cp "../lib/*:../esalib.jar" clldsystem.esa.ESAAnalyzer