2011-08-10 119 views
4

编译Java我正在写一个脚本编译蟒蛇 内一个.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 windows 7 

我知道如何解决的问题Windows上的CMD。但我如何解决python? 我的意思是:我如何设置路径?

+3

确定javac实际上是在你的Windows PATH上?这可能是什么它使用 –

+0

而不是设置'PATH',为什么不简单地提供'javac'(或'javac.exe'在你的情况下)的绝对路径? –

+0

你可以尝试os.environ ['PATH'] = PathToJava,看看是否有效。它适用于Linux,但我从来没有在Windows上试过。 – bschaffer13

回答

8
proc = subprocess.Popen(cmd, shell=True, env = {'PATH': '/path/to/javac'}) 

cmd = '/path/to/javac/javac ' + java_file 
proc = subprocess.Popen(cmd, shell=True) 
1

您还可以发送参数,以及:

  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]; 
+0

欢迎来到Stack Overflow!你能否改变你的例子,以适用于手头的问题,即调用'javac Test.java'而不是'java -jar lib/JavaMail.jar'? –