How to include the lib folder in the manifest classpath in Netbeans(如何在 Netbeans 的清单类路径中包含 lib 文件夹)
问题描述
我的 java 应用程序使用的库需要在类路径中查找文件 (log4j.xml).我使用 netbeans 来管理我的项目,但我找不到包含 lib/文件夹的方法.
A library that my java application uses needs looks for a file (log4j.xml) in the class path. I use netbeans to manage my project, but I can't find a way to include the lib/ folder.
Netbeans 自动在应用程序 jar 中创建一个 MANIFEST.MF 文件,并创建一个名为 lib/的文件夹,其中包含所有依赖项.此清单指定了覆盖命令行上提供的任何 -cp 参数的 Class-Path 属性.我可以在 netbeans 的库面板中选择任意文件夹,但它会在清单的类路径中创建一个子文件夹.我想要 lib/文件夹中的所有依赖项和 log4j.xml 文件.
Netbeans automatically creates a MANIFEST.MF file inside the application jar and also creates a folder called lib/ which includes all dependencies. This manifest specifies a Class-Path attribute that overrides any -cp argument provided on the command line. I can select an arbitrary folder in netbeans' library panel, but it creates a sub folder in the manifest's classpath. I'd like all dependencies and the log4j.xml file inside the lib/ folder.
希望可以在 IDE 中执行此操作.我包含了一个自动生成的 build-impl.xml 文件的片段.
Hopefully it's possible to do this in the IDE. I include a snippet of the auto-generated build-impl.xml file.
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
<pathconvert property="run.classpath.without.build.classes.dir">
<path path="${run.classpath}"/>
<map from="${build.classes.dir.resolved}" to=""/>
</pathconvert>
<pathconvert pathsep=" " property="jar.classpath">
<path path="${run.classpath.without.build.classes.dir}"/>
<chainedmapper>
<flattenmapper/>
<globmapper from="*" to="lib/*"/>
</chainedmapper>
</pathconvert>
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
<fileset dir="${build.classes.dir}"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</copylibs>
<echo>To run this application from the command line without Ant, try:</echo>
<property location="${dist.jar}" name="dist.jar.resolved"/>
<echo>java -jar "${dist.jar.resolved}"</echo>
</target>
谢谢.
推荐答案
我找到了一种修改 build-impl.xml 的方法.
I found a way to acheive this modifying the build-impl.xml.
我变了:
<attribute name="Class-Path" value="${jar.classpath}"/>
到:
<attribute name="Class-Path" value="${jar.classpath} /lib"/>
问题是netbeans会覆盖它,因为这个文件是自动生成的.
The problem is that netbeans will overwrite it since this file is automatically generated.
这篇关于如何在 Netbeans 的清单类路径中包含 lib 文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 Netbeans 的清单类路径中包含 lib 文件夹


- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01