【发布时间】:2012-05-19 23:05:55
【问题描述】:
在将 Java 从 1.6 升级到 1.7 x64(在 Windows 7 上)后,我突然无法再通过 Python 2.7 的 subprocess 模块启动 java.exe。以下脚本曾经可以正常工作:
import subprocess
subprocess.check_call([r"C:\Windows\system32\java.exe"])
现在它像这样失败了:
Traceback (most recent call last):
File ".\tst.py", line 2, in <module>
subprocess.check_call([r"C:\Windows\system32\java.exe"])
File "C:\Python27\lib\subprocess.py", line 506, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Python27\lib\subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
我还确认C:\Windows\system32\java.exe确实存在,是一个应用程序,并且可以从命令shell执行。
这里出了什么问题?
编辑:
我发现我可以从 Python 启动 C:\Program Files\Java\jre7\bin\java.exe,所以 C:\Windows\system32\java.exe 一定是一些奇怪的伪快捷方式,尽管从技术上讲是一个 Windows 应用程序。 1.7 版肯定搞砸了,因为我刚刚确认 1.6 版没问题。
【问题讨论】:
-
你确定不是链接吗?
-
@Marcin 根据文件属性,文件类型为
Application (.exe)。 -
如果您可以进行更多调查,您的编辑将是一个很好的答案。如果您无法进行更多调查,请考虑将其添加为答案。
-
@Marcin 将向 Java 开发人员提交反馈,希望他们能回复我。
-
运行 fsutil,它不是硬链接
标签: java python windows subprocess