Windows JDK 7将自己报告为JRE(通过“java.home”系统属性)

Windows JDK 7将自己报告为JRE(通过“java.home”系统属性),windows,java,Windows,Java,我刚刚安装了最新的JDK 7 Update 21,并编写了以下一行代码(在Windows 7上): 结果是(令人惊讶地): 我相信我解决了所有常见的问题: JAVA_HOME设置为“D:\JAVA\jdk1.7.0_21” 我已将“D:\Java\jdk1.7.0\u 21\bin”设置为系统路径设置中的第一个路径 Windows\System32中没有java.exe 我使用的是“新鲜”命令行 我已经广泛搜索了这个网站和其他网站 我的注册表不包含“HKEY\U LOCAL\U MACHINE\

我刚刚安装了最新的JDK 7 Update 21,并编写了以下一行代码(在Windows 7上):

结果是(令人惊讶地):

我相信我解决了所有常见的问题:

  • JAVA_HOME设置为“D:\JAVA\jdk1.7.0_21”
  • 我已将“D:\Java\jdk1.7.0\u 21\bin”设置为系统路径设置中的第一个路径
  • Windows\System32中没有java.exe
  • 我使用的是“新鲜”命令行
  • 我已经广泛搜索了这个网站和其他网站
  • 我的注册表不包含“HKEY\U LOCAL\U MACHINE\SOFTWARE\JavaSoft\Java运行时环境”键。“HKEY\U LOCAL\U MACHINE\SOFTWARE\JavaSoft\Java开发工具包\1.7”的值包含正确的“JavaHome”值
  • 向java.exe调用添加“-server”选项不会更改输出
  • 这里有更多的输出供您参考

    D:\Temp>echo %PATH%
    d:\Java\jdk1.7.0_21\bin
    
    D:\Temp>echo %JAVA_HOME%
    D:\Java\jdk1.7.0_21
    
    D:\Temp>type SystemInfo.java
    public class SystemInfo {
    
            public static void main(String[] args) {
                    System.out.println("java.home = " + System.getProperty("java.home"));
            }
    
    }
    
    D:\Temp>java -verbose SystemInfo
    [Opened d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    [Loaded java.lang.Object from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    [Loaded java.io.Serializable from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    ...
    [Loaded java.lang.Void from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    java.home = d:\Java\jdk1.7.0_21\jre
    [Loaded java.lang.Shutdown from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    [Loaded java.lang.Shutdown$Lock from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    
    (更新:)基本上,我需要知道如何运行我的java应用程序,以便它能够访问java编译器(可在JDK的tools.jar中找到),而无需将jar复制到其他地方。


    顺便说一句,这背后的主要问题是我的jetty无法编译JSP,因为java编译器丢失了。我知道我可以将“tools.jar”添加到JRE\lib\ext中,但这不是一个长期的解决方案。

    您可以将其视为输出,这是默认的Java执行环境

    <> >为了配置JETY使用JDK,可能有帮助。

    < P>这是默认的——在java热点解释器C++代码中指定。此外,这也是Sun最初希望在环境的Java主目录指向JDK时设置的系统属性

    请参阅将java.home系统属性描述为“java运行时环境(JRE)的安装目录”的地方。另外,请注意,将java.home系统属性描述为“java安装目录”的地方是错误的(令人震惊!)


    答案在于

    home应该指向运行时,即用于执行程序的运行时。它与JAVA_HOME变量无关,安装程序甚至没有设置它。无论您遇到什么问题,它都与java.home属性无关。您的示例中是否使用任何类型的od IDE一行程序?TooR--no,由“notepad.exe”提供支持)谢谢,但我不知道该怎么做。它只建议使用“一个完整的JDK”,我正拼命尝试使用它。@Tom用你的d:\Java\jdk1.7.0\u 21\bin\Java.exe明确地启动jetty有帮助吗?
    java.home = D:\Java\jdk1.7.0_21\jre
    
    D:\Temp>echo %PATH%
    d:\Java\jdk1.7.0_21\bin
    
    D:\Temp>echo %JAVA_HOME%
    D:\Java\jdk1.7.0_21
    
    D:\Temp>type SystemInfo.java
    public class SystemInfo {
    
            public static void main(String[] args) {
                    System.out.println("java.home = " + System.getProperty("java.home"));
            }
    
    }
    
    D:\Temp>java -verbose SystemInfo
    [Opened d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    [Loaded java.lang.Object from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    [Loaded java.io.Serializable from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    ...
    [Loaded java.lang.Void from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    java.home = d:\Java\jdk1.7.0_21\jre
    [Loaded java.lang.Shutdown from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
    [Loaded java.lang.Shutdown$Lock from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]