用python编译和执行Java文件
如何在python中打开java文件?我在网上搜索发现:用python编译和执行Java文件,python,python-3.x,Python,Python 3.x,如何在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): cmd=['java', java_file] proc=subprocess.
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):
cmd=['java', java_file]
proc=subprocess.Popen(cmd, stdout = PIPE, stderr = STDOUT)
input = subprocess.Popen(cmd, stdin = PIPE)
print(proc.stdout.read())
compile_java("CsMain.java")
execute_java("CsMain")
但后来我犯了一个错误:
Traceback (most recent call last):
File "C:\Python33\lib\subprocess.py", line 1106, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\casestudy\opener.py", line 13, in <module>
compile_java("CsMain.java")
File "C:\casestudy\opener.py", line 5, in compile_java
subprocess.check_call(['javac', java_file])
File "C:\Python33\lib\subprocess.py", line 539, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Python33\lib\subprocess.py", line 520, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Python33\lib\subprocess.py", line 820, in __init__
restore_signals, start_new_session)
File "C:\Python33\lib\subprocess.py", line 1112, in _execute_child
raise WindowsError(*e.args)
FileNotFoundError: [WinError 2] The system cannot find the file specified
>>>
回溯(最近一次呼叫最后一次):
文件“C:\Python33\lib\subprocess.py”,第1106行,在执行子进程中
startupinfo)
FileNotFoundError:[WinError 2]系统找不到指定的文件
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:\casestudy\opener.py”,第13行,在
编译java(“CsMain.java”)
文件“C:\casestudy\opener.py”,第5行,在compile\u java中
检查调用(['javac',java\u文件])
文件“C:\Python33\lib\subprocess.py”,第539行,在check\u调用中
retcode=call(*popenargs,**kwargs)
调用中第520行的文件“C:\Python33\lib\subprocess.py”
将Popen(*popenargs,**kwargs)作为p:
文件“C:\Python33\lib\subprocess.py”,第820行,在_init中__
恢复信号,启动新会话)
文件“C:\Python33\lib\subprocess.py”,第1112行,在执行子进程中
升起窗口错误(*e.args)
FileNotFoundError:[WinError 2]系统找不到指定的文件
>>>
python文件和java文件在同一个文件夹中,我使用的是python 3.3.2,如何解决这个问题?或者你们有别的方法吗?任何答案都很感谢谢谢 您需要将
路径
添加到java文件名中。像这样:
compile_java("C:\\path\to\this\CsMain.java")
我认为它没有识别
javac
命令。尝试手动运行该命令,如果javac
不是可识别的命令,请将其注册到PATH
变量中,然后重试
或者您可以尝试键入
javac
和Java
的Java目录的完整路径名。请以文本形式而不是图像形式发布回溯OK我正在编辑它,很抱歉,但我能知道原因吗?对不起,我是新来的。主要是为了搜索能力,在你的路径中是“javac”吗?在执行python代码的地方,是否也能成功地运行“javac-version”?是否打开了新的终端/命令窗口?为了使新路径生效,您需要这样做。此外,在系统变量路径中,可能必须在C:\Program Files\Java\jdk1.7.0\u 17\bin周围加引号。。。因为程序文件中的空间。基本上,如果“javac-version”在同一个窗口中运行,就在您键入要运行python代码的内容之前,那么我们可能会将您的路径作为一个因素删除。我如何将其注册到path变量中?我尝试键入目录的完整路径名,但得到了相同的错误,另外,为javac和java添加参数也不起作用,java
和javac
的路径类似于'C:\Program Files\java\jdk1.7.0_17\bin'
。版本可能会有所不同,具体取决于您安装的版本。只需添加一个,即可编辑PATH变量代码>然后是java的bin文件夹的路径。如果您不知道如何访问PATH变量,请转到此处:。但是,如果在命令(即子流程.check_调用(['C:\Program Files\Java\jdk1.7.0_17\bin\javac',Java_file])
中键入Java的bin目录的路径不起作用,那么这可能不是问题所在。您好,我在系统变量的路径中附加了这个C:\Program Files(x86)\Java\jdk1.7.0_11\bin并尝试在cmd中运行我的Java程序,javac被识别,程序运行没有问题,我也尝试再次运行我的python代码,同样的错误再次出现,我当时不知所措。这看起来很像一个路径问题。我在Python3.3和2.7中进行了测试,两者都运行良好。我还尝试从PATH变量中删除条目,但我得到了您所做的错误。然而,我刚刚测试了将javac和java的确切路径放入代码中,结果失败了,似乎我错了。它可能会失败,因为路径名中有一个空格(因此系统认为C:\Program
应该是一个命令)!,我在前面添加了一些代码,我认为它不起作用,但随后我重新打开我的python代码,它起作用了,我认为您关于更改路径的建议也对我有帮助,谢谢!