Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用via.jar文件时,Log4j不显示行日志记录_Java_Ant_Jar_Log4j - Fatal编程技术网

Java 使用via.jar文件时,Log4j不显示行日志记录

Java 使用via.jar文件时,Log4j不显示行日志记录,java,ant,jar,log4j,Java,Ant,Jar,Log4j,我有一个使用jar文件的程序,它使用log4j。 它的log4j属性包含以下模式: [%-5p] (%d) %l : %m%n 当我的程序访问jar中执行日志的方法时,它会产生以下结果: [INFO ] (2011-02-25 14:13:43,426) org.fractor.service.AppConfigService.getStringValueOf(?:?) : processing.user: root 我试图包含jar文件的原始src文件夹,当我再次运行该程序时,它会输出以下

我有一个使用jar文件的程序,它使用log4j。 它的log4j属性包含以下模式:

[%-5p] (%d) %l : %m%n
当我的程序访问jar中执行日志的方法时,它会产生以下结果:

[INFO ] (2011-02-25 14:13:43,426) org.fractor.service.AppConfigService.getStringValueOf(?:?) : processing.user: root
我试图包含jar文件的原始src文件夹,当我再次运行该程序时,它会输出以下内容:

[INFO ] (2011-02-25 14:13:43,426) org.fractor.service.AppConfigService.getStringValueOf(AppConfigService.java:125) : processing.user: root
这看起来还可以,但是当创建包含使用log4j的jar的程序的jar文件时,它不包括jar的src文件夹,因此给出了错误

是因为它只是引用了jar的src文件夹吗?我需要在jar中包含jar的src文件夹吗?现在看来使用这个罐子是没有用的


还有别的办法吗?谢谢。

听起来jar文件包含的类是在没有调试信息的情况下编译的


正如你所发现的,这是非常可取的。我建议您向负责构建jar的人员提交一个bug,如果可以的话,您可以自己重新构建它。如果没有,则包括src文件夹,但正确的jar更好。

您需要编译启用调试的Java类。在ant中,这将如下所示:

<javac destdir="XXXX" source="1.5" target="1.5" debug="true" encoding="UTF-8">


直接使用javac需要指定-g。参见。

+1 Java的传统是总是在编译时打开调试符号(例如javac-g)。2010年6月,我分析了Maven2中央存储库中的每个jar文件(包括jar中的jar!),我所查看的类中有95%以上的类启用了调试符号。正如托比约恩·拉文·安徒生所说,让制造罐子的人打开调试!(例如,在build.xml中)。@Julius,我的经验越丰富,我就越理解Java设计人员牢记调试工具堆栈跟踪的重要性。记录位置慢是文档中的一句老话,这是因为信息来自引发异常和分析其堆栈跟踪。那次行动过去比现在慢得多。