【发布时间】:2016-08-27 16:03:41
【问题描述】:
我正在使用 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 的清单将引用 Class-Path: lib/Library.jar
Library.jar 将引用Class-Path: lib/Dep.jar。
这一直有效,直到我们进行了一些修复并将 Library.jar 更新为最新版本的 Java。现在,当我们运行 App.jar 时,没有找到 Dep.jar,尽管我们的清单看起来和以前一样。 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>
【问题讨论】:
-
请发布您当前
build.xml的内容。 -
当前的build.xml没什么特别的,你可以看到
标签: java netbeans jar classpath libraries