问题似乎是,您必须添加
*.class
文件到类路径!你编译了目录中的类
model/classification
所以你的道路
*.等级
文件是
model/classification/Model.class
。要执行这个字节码,您需要通过写入将目录添加到类路径
java -cp model/classification Model
…
这个python代码适用于我:
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)
// I changed the following line by adding the directory to the classpath
cmd = ['java', '-cp', 'model/classification', java_class]
proc = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
stdout,stderr = proc.communicate(stdin)
print ('This was "' + stdout + '"')
compile_java(os.path.join('model', 'classification', 'Model.java'))
execute_java('Model.java', '5 6 7 8')
在这种情况下,目录路径是相对于Python脚本的执行目录的!