gpt4 book ai didi

ant ${java.home} 指向 $JAVA_HOME/jre,而不是 $JAVA_HOME

转载 作者:行者123 更新时间:2023-12-03 22:33:48 26 4
gpt4 key购买 nike

尝试编译 Javadoc taglet 时,需要 $JAVA_HOME/lib/tools.jar ,我发现ant(1.8.4版)集java.home$JAVA_HOME/jre而不仅仅是 $JAVA_HOME .我这样验证了这一点:

<echo>${java.home}</echo>
<echo>${env.JAVA_HOME}</echo>

[echo] /usr/java/jdk1.7.0_21/jre
[echo] /usr/java/jdk1.7.0_21

根据 ant -diagnostics ,没有任何属性像 jdk.home .因此,使用 tools.jar我要做:
<classpath location="${java.home}/../lib/tools.jar"/>

所以,我有两个问题:

1) 我的 Ant 设置是否有问题导致 java.home指向 JRE 而不是 JDK?

2)如果这是 Ant 应该工作的方式,则使用 ..在我的类路径中我应该做的事情?或者我应该做 ${env.JAVA_HOME}/lib/tools.jar ?或者完全是别的什么?

最佳答案

以下是答案:

  • “我的设置有问题吗……?”不。Ant 正在根据 JVM 系统属性设置它的内部 java.home。 HotSpot(JVM 内部)的代码将其设置为有意附加了“/jre”。事实上,Java(TM) Tutorials for System Properties正是这样描述的。来自 ant 内部的“java.home”变量实际上与在您的环境中设置的“JAVA_HOME”并不完全相同——不同但名称相似。
  • “(什么是)我应该做的事情?”您真的可以做任何您认为合适的事情,但请记住,Ant 可以并且通常确实在单独的 JVM 进程中运行。我假设您的系统环境可能指定了用于开发应用程序的 JVM,所以我只会使用“${env.JAVA_HOME}”来确保开发期望满足构建期望。

  • 更多信息请见 another similar answer here .

    另外,请考虑通过使用 -debug、-diagnostics 和/或 -verbose 标志运行 ant,可以从 ant 收集更多信息。

    关于ant ${java.home} 指向 $JAVA_HOME/jre,而不是 $JAVA_HOME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17438000/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com