我在Windows 8上使用JDK 8u25,而我的Java安装遇到问题。我可以很好地运行javac,但是运行java会产生以下错误消息:

The system cannot find the file C:\ProgramData\Oracle\Java\javapath\java.exe

我该如何解决?

我认为问题与我的环境变量有关。

正如我设置的那样,重要的变量是:
  • JAVA_HOMEC:\Program Files\Java\jdk1.8.0_25
  • CLASSPATH.;%JAVA_HOME%\lib
  • PATH<other paths omitted>;%JAVA_HOME%\bin

  • 用cmd中的set查看时,它们的扩展为:
  • JAVA_HOMEC:\Program Files\Java\jdk1.8.0_25
  • CLASSPATH.;C:\Program Files\Java\jdk1.8.0_25\lib;%CLASSPATH%;
  • PATHC:\ProgramData\Oracle\Java\javapath;C:\Program Files\Java\jdk1.6.0_45\bin;<other paths omitted>;C:\Program Files\Java\jdk1.8.0_25\bin
  • set的完整输出可以在here中查看。

    最佳答案

    我目前正在解决类似的问题。我不能说这将解决您的错误,因为其他软件可能存在问题(Eclipse Luna就是我的情况)。

    Java正在使用PATH变量中给定的路径,即

      C:\ProgramData\Oracle\Java\javapath
    

    转到此文件夹(ProgramData已隐藏,因此如有必要,请取消隐藏),然后右键单击java.exe符号链接(symbolic link)。您会在“目标”字段中看到它正在寻找java.exe的地方。它可能指向先前jdk1.6.0_45安装中的java.exe文件。您可以在此处粘贴新的快捷方式,也可以像其他人提到的那样更改PATH设置。

    我发现Java安装程序至少在从1.8到1.7时不会更改javapath或更新系统路径。就我而言,更改快捷方式只会导致Eclipse在启动时出现问题。

    编辑: - - -
    在使用javapath文件夹快捷方式后,事实证明,至少在Eclipse中,您需要符号链接(symbolic link)。参见Windows how to create directory symlink

    您不需要/d开关即可进行文件符号链接(symbolic link),
      mklink java.exe "C:\Program Files\Java\jdk1.8.0_20\bin\java.exe"
      mklink javaw.exe "C:\Program Files\Java\jdk1.8.0_20\bin\javaw.exe"
      mklink javaws.exe "C:\Program Files\Java\jdk1.8.0_20\bin\javaws.exe"
    

    现在这对我有用。

    10-08 10:58