java - 使用 NetBeans 设置 jar 文件以从类路径中删除 lib

标签 java netbeans jar classpath libraries

我使用的是 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/

相关文章:

java - 加载打包成jar、包含资源的java插件时出现问题

java - 如何在 Spring Boot 中使用 spring-security.xml 中的配置?

java - 如何使用多个 OR 动态构建 booleanbuilder 条件

java - 如何使用Jboss7设置hibernate3?

java - 类文件应该放在哪个文件夹中以便 JSP 访问它?

eclipse - 在 Eclipse 中突出显示修改的行

java - 由于配置错误 : Malformed Lambda proxy response in Java 导致执行失败

java - Netbeans Java 调试器因内存不足错误而崩溃

java - 如何将 API 的依赖项与使用它的主程序隔离?

gradle - 在 nebula/gradle 中,如何将正在发布的版本注入(inject)正在发布的 jar 中?