我正在尝试使用 subprocess.call()
从 python 脚本运行 java 类:
import os
import subprocess
java_file = os.getcwd() + "/src/ch/idsia/scenarios/Main.java"
if os.path.isfile(java_file):
java_class, _ = os.path.splitext(java_file)
cmd = ['java', java_class]
subprocess.call(cmd, shell=False)
但是运行这个Python脚本给了我错误:无法找到或加载主类.Users.alavin.Code.MarioAI_ver02_April_2011.src.ch.idsia.scenarios.Main
。我还尝试了 java_class
的以下变体:
“Users.alavin.Code.MarioAI_ver02_April_2011.src.ch.idsia.scenarios.Main”
“src.ch.idsia.scenarios.Main”
Python脚本位于“Users/alavin/Code/MarioAI_ver02_April_2011/”中。 java 类是包“src.ch.idsia.scenarios”中的“Main.java”。 java 项目位于 Eclipse 中。
注释:mac osx 10.9; python 2.7; java 1.7;使用 jython 不是一个选择;从终端运行 echo $CLASSPATH
会出现一个空行。
预先感谢您提供的任何帮助/指导。
最佳答案
尝试使用-cp
选项指定类路径,例如
java -cp /Users/alavin/Code/MarioAI_ver02_April_2011/src/ch/idsia/scenarios Main
所以,
subprocess.call(['java', '-cp', '/Users/alavin/Code/MarioAI_ver02_April_2011/src/ch/idsia/scenarios', 'Main'])
编辑
由于 Main 位于包 src.ch.idsia.scenarios
中,请尝试将命令修改为:
subprocess.call(['java', '-cp', '/Users/alavin/Code/MarioAI_ver02_April_2011', 'src.ch.idsia.scenarios.Main'])
关于java - python子进程调用java类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29292724/