Where does Ant set its #39;java.home#39; (and is it wrong) and is it supposed to append #39;/jre#39;?(Ant在哪里设置它的java.home(它是错误的),它应该附加/jre吗?)
问题描述
好的,我在 CentOS 6.3 上使用 Ant 版本 1.7.1(默认安装):
Okay, I'm using Ant version 1.7.1 (default install) on CentOS 6.3:
[theuser@dev-ingyhere ~]$ ant -version
Apache Ant version 1.7.1 compiled on August 24 2010
[theuser@dev-ingyhere ~]$ cat /etc/*-release
CentOS release 6.3 (Final)
我设置了 JAVA_HOME
并运行 ant
:
I have JAVA_HOME
set and I run ant
:
[theuser@dev-ingyhere ~]$ export JAVA_HOME=/usr/java/jdk1.7.0_17 ; echo $JAVA_HOME ;
/usr/java/jdk1.7.0_17
[theuser@dev-ingyhere ~]$ ant -diagnostics | grep java\.home
java.home : /usr/java/jdk1.7.0_17/jre
这更有趣:
[theuser@dev-ingyhere ~]$ export JAVA_HOME=/a/fools/folly ; echo $JAVA_HOME ; ant -diagnostics | grep java\.home
/a/fools/folly
java.home : /usr/java/jdk1.7.0_17/jre
[theuser@dev-ingyhere ~]$ env | grep JAVA
JAVA_HOME=/a/fools/folly
所以,我确实得到了一件事——显然 Oracle 的 Java 7 Javadoc for Class System 是错误的(令人震惊!),其中将 java.home
系统属性描述为Java 安装目录".我知道这是因为 Java(TM) 系统属性教程将 java.home
系统属性描述为Java 运行时环境 (JRE) 的安装目录".换句话说,环境中的 JAVA_HOME
不一定等于 JVM 系统属性中的 java.home
.(什么设置?!)
So, I do get one thing -- apparently Oracle's Java 7 Javadoc for Class System is WRONG (aghast!) where it describes the java.home
System Property as the "Java installation directory." I know that because the Java(TM) Tutorials for System Properties describes the java.home
System Property as the "Installation directory for Java Runtime Environment (JRE)." In other words the JAVA_HOME
in the environment does not necessarily equal java.home
in the JVM System Properties. (What sets that?!)
问题:Ant
在哪里以及如何获取/设置系统属性 java.home
?
QUESTION: Where and how does Ant
get/set the system property java.home
?
推荐答案
真是一个JVM内部问题
由于 Ant 只是在回应 java.lang.System 属性(请参阅上面原始帖子下的评论),这确实是一个 JVM 问题.Java HotSpot 虚拟机 是核心解释器.代码可在 hg.openjdk.java.net 上在线获取.
Since Ant is just echoing the java.lang.System properties (see comment above under original post), this is really a JVM question. The Java HotSpot Virtual Machine is the core interpreter. Code is available online at hg.openjdk.java.net.
C++代码第309行对于 HotSpot (os_linux.cpp),在 os
类中有一个 init_system_properties_values()
方法.它做了一些温和的启发式方法来嗅出一个名为 home_path
的变量的位置,该变量最终被设置为 Java 用户所看到的java.home".代码中的注释表明<java_home>/jre"被正式指定为java.home"的 java.lang.System 属性值(在 JDK 安装的情况下).
On line 309 of the C++ code for HotSpot (os_linux.cpp) there is a an init_system_properties_values()
method in the os
class. It does some mild heuristics to kind of sniff out the location for a variable named home_path
which ends up being set to what Java users see as "java.home". Comments in the code indicate that '<java_home>/jre' is being formally specified as the java.lang.System property value for "java.home" (in the case of a JDK install).
这篇关于Ant在哪里设置它的'java.home'(它是错误的),它应该附加'/jre'吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Ant在哪里设置它的'java.home'(它是错误的),它应该附加'/jre'吗?
基础教程推荐
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 降序排序:Java Map 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01