【发布时间】:2018-11-02 20:08:05
【问题描述】:
我跟着SO Answer从python执行一个java程序
import os.path, subprocess
from subprocess import STDOUT, PIPE
def compile_java(java_file):
subprocess.check_call(['javac', java_file])
def execute_java(java_file, stdin):
java_class, ext = os.path.splitext(java_file)
cmd = ['java', java_class]
process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=STDOUT, universal_newlines=True)
stdout, stderr = process.communicate(stdin)
print(stdout)
compile_java(os.path.join('model', 'classification', 'Model.java'))
execute_java('Model', '5 6 7 8')
python 代码编译/model/classification/Model.java 没有问题。但是当python代码执行java程序时,Java无法找到或加载主类Model。在同一目录下的命令行中执行java Model(带有编译版本,由上面的python sn -p触发)works。
【问题讨论】:
-
你试过
execute_java('model.classification.Model', '5 6 7 8')吗(可能需要去掉splitext的使用!)?