我的Java應用程序使用的庫需要在類路徑中查找文件(log4j.xml)。我使用netbeans來管理我的項目,但我找不到包含lib /文件夾的方法。如何在Netbeans的清單類路徑中包含lib文件夾
Netbeans會自動在應用程序jar中創建一個MANIFEST.MF文件,並創建一個名爲lib /的文件夾,其中包含所有依賴關係。此清單指定一個覆蓋命令行上提供的任何-cp參數的Class-Path屬性。我可以在netbeans的庫面板中選擇一個任意文件夾,但它會在清單的類路徑中創建一個子文件夾。我想要所有的依賴和lib /文件夾內的log4j.xml文件。
希望有可能在IDE中這樣做。我包含了一個自動生成的build-impl.xml文件的片段。
<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>
謝謝。
也許你可以在Netbeans之外建立一個自定義的ANT腳本,這樣它就不會被覆蓋。 – ssakl 2009-11-16 20:54:37
我可能沒有別的作品。我對Ant沒有什麼瞭解,也沒有太多時間來學習Ant。我認爲我的問題不會是一件容易的事。 :( – FabienB 2009-11-18 23:06:04