我刚刚安装了最新的JDK 7 Update 21并编写了以下单行程序(在Windows 7上):
public static void main(String[] args) {
System.out.println("java.home = " + System.getProperty("java.home"));
}
输出(令人惊讶):
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]
(更新:) 基本上我需要知道,如何运行我的java应用程序,以便它可以访问java编译器(在JDK的tools.jar中找到),而无需将JAR复制到其他地方。
BTW这背后的主要问题是我的jetty无法编译JSP,因为缺少java编译器。我知道我可以将“tools.jar”添加到JRE \ lib \ ext,但这不是一个长期的解决方案。答案 0 :(得分:6)
默认情况下,这是在Java HotSpot解释器的C ++代码中指定的。此外,Sun最初希望系统属性在环境的Java主目录指向JDK时设置。
请参阅Java(TM) Tutorials for System Properties,其中java.home系统属性描述为“Java Runtime Environment(JRE)的安装目录”。另请注意,Oracle's Java 7 Javadoc for Class System是错误的(骇然!),它将java.home系统属性描述为“Java安装目录”。
答案 1 :(得分:0)
你看到的输出完全没问题 - 它是你默认的Java执行环境。
为了配置jetty以使用您的JDK,可能this有帮助。