当前位置: 首页 > 面试题库 >

Ant在哪里设置了它的“ java.home”(这是错误的),并且应该附加“ / jre”吗?

郎羽
2023-03-14
问题内容

好的,我在CentOS 6.3上使用的是Ant版本1.7.1(默认安装):

[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

[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的Class System的Java 7
Javadoc
是WRONG(aghast!),其中将java.home系统属性描述为“
Java安装目录”。我知道,因为系统属性的Java™教程将系统属性描述java.home为“
Java运行时环境(JRE)的安装目录”。换句话说JAVA_HOME,环境中的不一定等于java.homeJVM系统属性。(那是什么?!)

问题:在哪里以及如何Ant获得/设置系统属性java.home


问题答案:

真的是JVM内部问题

由于Ant只是在回显java.lang.System属性(请参见原始文章上方的注释),所以这实际上是一个JVM问题。在的Java
HotSpot虚拟机
的核心解释。可在hg.openjdk.java.net上在线获取代码。

在HotSpot(os_linux.cpp)的C
++代码的第309行上,该类中有一个init_system_properties_values()方法os。它进行了一些轻微的启发式操作,以嗅探名为的变量的位置,该变量home_path最终被设置为Java用户所看到的“
java.home”。代码中的注释表明,“ / jre”已被正式指定为“
java.home”的java.lang.System属性值(对于JDK安装)。



 类似资料:
  • 所以,我确实得到了一件事--显然Oracle的Java7 Javadoc for Class System是错误的(惊呆了!)其中它将系统属性描述为“Java安装目录”。我知道这一点,因为Java(TM)系统属性教程将系统属性描述为“Java运行时环境(JRE)安装目录”。换句话说,环境中的不一定等于JVM系统属性中的。(这是什么决定的?!) 问题:在哪里以及如何获得/设置系统属性?

  • 我正在尝试编辑简单的Andorid应用程序build.gradle 我应该添加https://developer.android.com/studio/build/application-id 我应该把andorid{...}放在哪里?

  • 问题内容: 我正在使用OS X 10.10。尝试与我们团队的私有Docker注册中心进行通信时,它一直给我这样的错误: 在Ubuntu系统上,可以通过添加到配置文件中来解决此错误,如下所示: Mac OS是否有类似的配置文件可在其中添加选项? 问题答案: 您必须将其设置为Docker Machine的/ Boot2Docker配置文件: / var / lib / boot2docker / pr

  • 问题内容: ( 更清楚 ) 您可以在Oracle的官方网站上找到JRE 8 ,JRE 9 和JRE 10(单击每个)。 但是 JRE 11 在哪里? 另外,JDK 11不包含JRE。我期望JRE与JDK一起安装。 我们应用程序的最终用户是否需要安装JDK? 问题的原始版本: 我从其官方站点下载并安装了OracleJDK 11 。我同时安装了和(第一个安装 在Linux计算机上,第二个安装在Wind

  • 谢谢你的回应。我检查了位置,它被标识为与ANDROID_SDK_HOME环境路径相同的位置。它仍然说根是未定义的。我创建了一个到相同位置的ANDROID_SDK_ROOT环境路径,但它仍然没有定义。

  • 问题内容: 首先,我了解命令行参数,但是我不想使用它,因为我想学习,而不仅仅是完成它,所以… 在哪里可以设置用于运行Netbeans的JRE / JDK? 一点背景: 我安装了JDK 1.6_10(系统是Windows Vista Business 64) 我安装了Netbeans 6.5 几周后,我卸载了Netbeans 6.5(希望通过重新安装来解决一些问题) 我还卸载了JDK 1.6_10并