Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python编译和执行Java文件_Python_Python 3.x - Fatal编程技术网

用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.

如何在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.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代码,它起作用了,我认为您关于更改路径的建议也对我有帮助,谢谢!