gpt4 book ai didi

java - 如何让 Ant 更喜欢链接 JAR 中的类而不是 JDK 类?

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:51 26 4
gpt4 key购买 nike

我正在尝试构建 dom4j JAR,其中包含一个 xml-apis JAR,其中包含比最新 JDK 附带的 DOM API 更旧的 DOM API。

但是,即使在构建文件中源和目标编译器属性设置为 1.3,并且即使 xml-apis JAR 包含在构建路径中,Ant 仍会尝试针对另一个更新的 w3c API 编译 dom4j (我猜一个来自 JDK 安装)。

这是相关的 Ant 代码:

<path id="compile.classpath">
<fileset dir="./lib/endorsed">
<include name="*.jar" />
</fileset>
<fileset dir="./lib">
<include name="*.jar" />
</fileset>
</path>

<target name="compile" depends="prepare-src">
<javac srcdir="${build.src}"
destdir="${build.dest}"
debug="${debug}"
optimize="${optimize}"
target="1.3"
source="1.3"
deprecation="${deprecation}"
classpathref="compile.classpath">
</javac>
</target>

应使用的 JAR 在 lib/endorsed 中,但在编译期间未使用。

怎么会?

最佳答案

您可以修改引导类路径,ANT 中的特定属性支持该路径,但我认为它应该是 java.endorsed.dirs 属性(在原始 javac 中):

javac -Djava.endorsed.dirs=/some/path/lib/endorsed ...

或者使用 compilerarg ANT 子元素:

<target name="compile" depends="prepare-src">
<javac srcdir="${build.src}"
destdir="${build.dest}"
debug="${debug}"
optimize="${optimize}"
target="1.3"
source="1.3"
deprecation="${deprecation}"
classpathref="compile.classpath">
<compilerarg value="-Djava.endorsed.dirs=/some/path/lib/endorsed"/>
</javac>

您不应该将 endorsed 目录添加到类路径中作为引导类路径,并且在类路径解析所需类型之前检查任何认可的目录。这意味着将首先找到 JDK 的较新 DOM 实现。

关于java - 如何让 Ant 更喜欢链接 JAR 中的类而不是 JDK 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388441/

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