Java:系统无法执行指定的程序

时间:2016-08-23 08:31:07

标签: java windows applocker

javac -version提供javac的正确版本。 但是,java -version将错误视为

  

“系统无法执行指定的程序”

PATH变量设置为“C:\ Program Files \ Java \ jdk1.8.0_102 \ bin”

Image of CMD

3 个答案:

答案 0 :(得分:0)

这不是编程问题。但是你必须将%JRE_HOME%\ bin添加到PATH变量

答案 1 :(得分:0)

该特定错误可能与对java可执行文件的符号链接的评估有关。

通常,无效的可执行文件名(即路径中找不到的名称)将产生错误,并带有以下文字:

  

'的javax'不被识别为内部或外部命令,可操作程序或批处理文件。

当您收到其他错误时,这可能不是您的问题。

当在Windows PC上安装java时,安装程​​序会创建一个目录(通常路径为C:\ProgramData\Oracle\Java\javapath,并在其中放置3个符号链接。它们用于java.exejavaw.exejavaws.exe。这可以防止您的路径因可能碰撞的可执行文件名称而变得过于混乱。

javac.exe(以及keytool等)的工作原因是您将JRE / JDK bin文件夹添加到PATH中。但为什么java / javaw / javaws不起作用?因为它首先找到上面的javapath目录(从左到右搜索PATH)。您可以使用where命令查看此问题。例如:

C:\>where java
  C:\ProgramData\Oracle\Java\javapath\java.exe
  C:\Program Files (x86)\Java\jre1.8.0_31\bin\java.exe

C:\>where keytool
  C:\Program Files (x86)\Java\jre1.8.0_31\bin\keytool.exe

这是一个好的情况,除了javapath\java.exe符号链接不起作用,策略禁止执行,或者路径错误。

从管理命令提示符处,运行以下命令。结果应类似于下面的

C:\>fsutil behavior query SymlinkEvaluation
    Local to local symbolic links are enabled.
    Local to remote symbolic links are disabled.
    Remote to local symbolic links are disabled.
    Remote to remote symbolic links are disabled.

如果"本地到本地"符号链接被禁用,这是您的问题(因为此设置会阻止以下重新分析点)

您可以使用以下命令启用它们: fsutil behavior set SymlinkEvaluation L2L:1

仔细检查设置是否已使用query子命令更改。您无需重新启动即可使此设置生效。

如果这不能解决您的问题,请确保符号链接的目标存在。尝试通过Explorer运行它;应弹出控制台对话框然后关闭。如果没有,确认它是否正确的一种简单方法是右键单击符号链接并选择"打开文件位置"。如果出现错误对话框,说明' 快捷方式问题:项目' java.exe'此快捷方式引用已更改或移动[...] ',则路径不正确。

您可以通过“快捷方式”查看路径的设置。符号链接属性中的选项卡。如果路径错误,您可以删除符号链接,然后通过mklink命令重新创建它。删除符号链接,然后从管理命令提示符运行以下命令: 请务必将第二条路径替换为实际JRE / JDK的路径!

mklink C:\ProgramData\Oracle\Java\javapath\java.exe "C:\Program Files (x86)\Java\jre1.8.0_91\bin\java.exe"

此时,运行' java'从命令行查看它是否有效。

如果没有,请导航到所需的java.exe,查看其文件属性,并确保没有"取消阻止"底部有按钮。如果有,请单击它。

答案 2 :(得分:-1)

您需要在环境设置中设置PATH变量(jre / bin /)。 在cmd中,设置PATH =“C:/ ProgramFiles / java / jre * / bin”