2011-08-10 167 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'? –