我已經成功地寫了查找並從NetBeans中運行時使用我的log4j2.xml文件小型的Java程序。我現在正在嘗試創建一個包含我的其他jar的jar文件,以便我可以在命令行上運行它。我用Ant構建了jar文件,並在我的jar目標中使用了「Manifest」。清單/類路徑沒有成功設置目錄的CLASSPATH中log4j2.xml
構建完成後,我執行'java -jar BimbleParser.jar',找到了我放入Manifest'Class-Path'中的所有jar文件,程序運行正常。除了它不記錄每個log4j2.xml文件(到一個.log文件)。當我做一些事情,給力的錯誤,我得到一些「錯誤的記錄到命令行,相信log4j2的默認行爲,表明它一直沒有找到log4j2.xml文件。
我很積極的,沒有被作爲在清單在我的構建文件的「罐子」的目標設置CLASSPATH中發現含有log4j2.xml的目錄。
下面是與清單中的螞蟻任務是:
<target name="jar" description="Create jar file" depends="junit">
<jar destfile="${project.name}.jar" duplicate="add" basedir="${classes_dir}" filesetmanifest="skip" >
<manifest>
<attribute name="Build-Date" value="${TODAY} ${TSTAMP}"/>
<attribute name="Main-Class" value="com.mumble.parsers.Bumble.BumbleParser"/>
<attribute name="Class-Path" value="./CCom/config ./CCom/lib/CComCommons.jar ./CCom/lib/commons-configuration.jar ./CCom/lib/commons-lang.jar ./CCom/lib/log4j-api.jar ./CCom/lib/log4j-core.jar ./CCom/lib/commons-logging.jar ./CCom/lib/commons.lang3.jar"/>
</manifest>
</jar>
</target>
的log4j2.xml位於第一類路徑條目,如「./CCom/config」和其他所有的jar文件被發現並由我的程序使用。我究竟做錯了什麼?
也許還有爲了使log4j2.xml文件可見通過類路徑在這個「Java的罐子BimbleParser.jar」方案替代解決方案?
感謝您的幫助
嘗試從您的類路徑中除去log4j2-api.jar文件,看看它的工作原理 – Satya
這沒有幫助 - NoClassDefFoundError。該jar文件包含「LogManager」,或多或少都是該日誌記錄功能的「根」類。 – joe7pak
嘗試使用'/ CCOM/config'而不是'/ CCOM/Config'在你的清單 –