我使用的是 NetBeans 8.1、Apache Ant 1.9.4 和 Java 1.8.0_66。
在我们的本地网络部署环境中,我们有一个带有/lib 子目录的应用程序目录。我们在/lib 中有一个库 (Library.jar),它依赖于/lib 中的其他库 (Dep.jar)。许多应用程序 (App.jar) 都依赖于 Library.jar。许多这些库和应用程序是一段时间以前构建的,并且使用的版本比我提到的更旧(Java 1.6 或更早版本)。
以前,App.jar 的 list 将引用 Class-Path: lib/Library.jar
和 Library.jar 将引用 Class-Path: lib/Dep.jar
。
在我们进行一些修复并将 Library.jar 更新为最新版本的 Java 之前,这一直有效。现在,当我们运行 App.jar 时,找不到 Dep.jar,尽管我们的 list 看起来和以前一样。 App.jar 现在正在寻找 lib/lib/Dep.jar 而不是 lib/Dep.jar,因为 Library.jar 在/lib 目录中。
到目前为止,我们最好的解决方案是将 Library.jar 中的 Manifest.mf 文件编辑为 Class-Path: Dep.jar
。这可以防止 App.Jar 深入两个库来寻找 Dep.Jar。但是,编辑 jar 文件不是我们想要的常见做法,因此我们更喜欢 NetBeans IDE 中的解决方案,或者我们可以添加到 build.xml 中的东西,它将从 jar 文件的类路径中删除 lib,并允许我们引用同一目录中的 jar。我想要一个不涉及 package-for-store 的解决方案,因为我们希望更新依赖的 jar,同时维护指向它们的指针。
此外,我想首先知道是什么导致了更改,是版本更新还是其他原因。任何帮助将不胜感激。
当前的 build.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Library" default="default" basedir=".">
<description>Builds, tests, and runs the project Library.</description>
<import file="nbproject/build-impl.xml"/>
</project>
最佳答案
您可以使用 <path>
或 <classpath>
Apache Ant 定义如下,
<path id="ant.classpath">
<fileset dir="common-libs">
<include name="*.jar" />
</fileset>
</path>
在您的 build.xml 中,它可以指向您所需的 ``*.jar"所在的文件夹。
然后在target
中构建应用程序时使用此路径你的构建命令。
更多引用, Path-like Structures
而且, Where are classpath, path and pathelement documented in Ant version 1.8.0
关于java - 使用 NetBeans 设置 jar 文件以从类路径中删除 lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36990081/