2012-06-25 61 views
0

我想从python使用命令行调用java程序。代码如下:从Python调用Java:“无法找到或加载类”错误

subprocess.check_output(["java", "pitt.search.semanticvectors.CompareTerms", "-queryvectorfile","termvectors.bin","term1","term2"]) 

我得到以下错误:

Error: Could not find or load main class pitt.search.semanticvectors.CompareTerms 

这发生在我逃离的PyDev(在Eclipse 3.7.2版本2.5)程序。但是,如果我从终端运行相同的代码,它的工作原理和我得到我想要的结果。

我几乎可以肯定的是,问题与PyDev的一些配置相关的,以及它如何处理Java类路径,那就是:

/Users/feralvam/Programas/semanticvectors-3.4/semanticvectors-3.4.jar:/Users/feralvam/Programas/lucene-3.5.0/lucene-core-3.5.0.jar:/Users/feralvam/Programas/lucene-3.5.0/contrib/demo/lucene-demo-3.5.0.jar: 

类“pitt.search.semanticvectors.CompareTerms”是“semanticvectors-3.4.jar”。

任何帮助你可以给我会非常感激。

谢谢!

+0

你是如何检查java classpath的?你有没有试过把它作为命令行参数? – eis

+0

'import os;打印os.environ ['classpath']'显示命令行类路径的任何区别? – User

+0

@ user1320237我做了你的建议,并得到以下结果:KeyError:'classpath' – feralvam

回答

0

@eis提出的解决方案工作。现在,命令是:

subprocess.check_output(["java", "-classpath", "/Users/feralvam/Programas/semanticvectors-3.4/semanticvectors-3.4.jar:/Users/feralvam/Programas/lucene-3.5.0/lucene-core-3.5.0.jar:/Users/feralvam/Programas/lucene-3.5.0/contrib/demo/lucene-demo-3.5.0.jar:", "pitt.search.semanticvectors.CompareTerms", "-queryvectorfile","/Users/feralvam/termvectors.bin","term1","term2"]) 
相关问题