【问题标题】:calling a java program in a python script : Classpath Error在 python 脚本中调用 java 程序:类路径错误
【发布时间】:2013-07-08 19:30:15
【问题描述】:

我正在运行一个 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

我该如何解决这个问题?

【问题讨论】:

    标签: java python classpath subprocess


    【解决方案1】:

    问题是您将.. 点放在了错误的位置。

    clldsystem.esa.ESAAnalyzer 是包含main() 方法的Java 类,该方法将由java 执行。 java 试图通过查看它从 -cp 指定的类路径中指定的 jar 加载的类来找到 clldsystem.esa.ESAAnalyzer

    所以尝试替换

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

    以下内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 2018-01-05
      相关资源
      最近更新 更多