python子进程调用java类时出错

2024-10-01 17:36:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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脚本给了我Error: Could not find or load main class .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\u ver02\u April\u 2011/”中。java类是“主类“包装内”src.ch.idsia公司.情景”。java项目在Eclipse中。在

注意:macosx10.9;python2.7;java1.7;使用jython不是一个选项;从终端运行echo $CLASSPATH会得到一个空白行。在

提前感谢您的任何帮助/指导。在


Tags: src脚本osmaincodejavachusers
2条回答

尝试使用-cp选项来指定类路径,例如

java -cp /Users/alavin/Code/MarioAI_ver02_April_2011/src/ch/idsia/scenarios Main

所以

^{2}$

编辑

由于Main在包src.ch.idsia.scenarios中,请尝试将命令修改为:

subprocess.call(['java', '-cp', '/Users/alavin/Code/MarioAI_ver02_April_2011', 'src.ch.idsia.scenarios.Main'])

类路径是问题所在;我需要在来自终端的调用中包括jar文件:java -cp bin/MarioAI/:lib/asm-all-3.3.jar:lib/jdom.jar ch.idsia.scenarios.Main。因此,在python中运行subprocess命令将是:

import subprocess

cmd = ['java', '-cp', 'bin/MarioAI/:lib/asm-all-3.3.jar:lib/jdom.jar', 'ch.idsia.scenarios.Main']
subprocess.call(cmd, shell=False)

要通过Eclipse检查类路径中的jar文件:右键单击主.java->;运行配置->类路径选项卡。在

相关问题 更多 >

    热门问题