我刚刚安装了最新的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复制到其他地方.
顺便说一句,这背后的主要问题是,由于缺少java编译器,我的jetty无法编译JSP。我知道我可以在JRE\lib\ext中添加"tools.jar“,但这不是一个长期的解决方案。
发布于 2013-07-24 23:37:19
默认情况下,这是在Java C++解释器的C++代码中指定的。而且,Sun最初希望在环境的Java主节点指向JDK时设置系统属性。
请参见系统属性的Java(TM)教程,其中它将java.home系统属性描述为“(JRE)的安装目录”。另外,请注意Oracle的Java7JavadocforClass系统是错误的(惊呆了!)其中,它将java.home系统属性描述为“JavaInstallation目录”。
答案在于实际JVM代码的第309行!
发布于 2013-06-12 09:26:10
您所看到的输出是非常好的--这是您的默认Java执行环境。
为了将jetty配置为使用JDK,也许这会有所帮助。
https://stackoverflow.com/questions/17061482
复制相似问题