我刚刚安装了最新的 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
我相信我解决了所有常见原因:
- JAVA_HOME 设置为“D:\Java\jdk1.7.0_21”
- 我已将“D:\Java\jdk1.7.0_21\bin”设置为系统 PATH 设置中的第一个路径。
- Windows\System32 中没有 java.exe
- 我正在使用“新鲜”的命令行
- 我已经广泛搜索了这个网站和其他网站
- 我的注册表不包含“HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment”键。“HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\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 复制到其他地方。
顺便说一句,这背后的主要问题是我的码头无法编译 JSP,因为缺少 java 编译器。我知道我可以将“tools.jar”添加到 JRE\lib\ext 中,但这不是一个长期的解决方案。