从python编译java
我正在编写一个脚本,从python中编译一个.java文件 但是错误从python编译java,java,python,compilation,javac,Java,Python,Compilation,Javac,我正在编写一个脚本,从python中编译一个.java文件 但是错误 import subprocess def compile_java(java_file): cmd = 'javac ' + java_file proc = subprocess.Popen(cmd, shell=True) compile_java("Test.java") 错误: javac is not recognized as an internal or external command
import subprocess
def compile_java(java_file):
cmd = 'javac ' + java_file
proc = subprocess.Popen(cmd, shell=True)
compile_java("Test.java")
错误:
javac is not recognized as an internal or external command windows 7
我知道如何解决windows上CMD的问题。但是我如何为python解决它呢?
我的意思是:我如何设置路径
proc = subprocess.Popen(cmd, shell=True, env = {'PATH': '/path/to/javac'})
或
您还可以发送参数:
variableNamePython = subprocess.Popen(["java", "-jar", "lib/JavaTest.jar", variable1, variable2, variable3], stdout=subprocess.PIPE)
JavaVariableReturned = variableNamePython.stdout.read()
print "The Variable Returned by Java is: " + JavaVariableReturned
接收这些变量的Java代码如下所示:
public class JavaTest {
public static void main(String[] args) throws Exception {
String variable1 = args[0];
String variable2 = args[1];
String variable3 = args[2];
你确定javac确实在你的Windows路径上吗?这可能就是它所使用的,而不是设置
PATH
,为什么不简单地提供javac
(或者在您的例子中是javac.exe
)的绝对路径呢?您可以试试os.environ['PATH']=PathToJava,看看是否有效。它在Linux上工作,但我从未在Windows上尝试过。欢迎使用堆栈溢出!您是否可以更改您的示例,使其适用于当前的问题,即调用javac Test.java
而不是java-jar lib/JavaMail.jar
?您真的不需要shell=True
,只需将参数作为列表传递给Jean Françoisfare即可,对于我们不知道的其他环境设置,他可能需要它;它在问题中,所以我把它留在了答案中。
public class JavaTest {
public static void main(String[] args) throws Exception {
String variable1 = args[0];
String variable2 = args[1];
String variable3 = args[2];