我已经成功编写了一个小型 Java 程序,该程序在从 NetBeans 运行时查找并使用我的 log4j2.xml 文件。我现在正在尝试创建一个包含我的其他 jar 的 jar 文件,所以我可以在命令行上运行它。我用 Ant 构建了 jar 文件,并在我的 jar 目标中使用了“Manifest”。
构建后,我执行“java -jar BimbleParser.jar”,找到了我放在 Manifest 'Class-Path' 中的所有 jars 文件,程序运行正常。除了它不记录每个 log4j2.xml 文件(到 .log 文件)。当我设置强制错误时,我在命令行中记录了一些“错误”,我相信 log4j2 的默认行为,表明它没有找到 log4j2.xml 文件。
我很肯定包含 log4j2.xml 的目录没有在 CLASSPATH 中找到,正如我的构建文件的“jar”目标中的清单中设置的那样。
这是其中包含清单的 ant 任务:
<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 文件。我究竟做错了什么?
在这个“java -jar BimbleParser.jar”场景中,也许有其他解决方案可以通过类路径使 log4j2.xml 文件可见?
谢谢你的帮助