我正在开发一个Eclipse应用程序,我希望有一个定制的ConsoleAppender,这样我就可以将所有日志重定向到日志窗口。log4j插件和log4j片段(包含log4j.properties)创建了一个我成功使用的单元。我还创建了一个“扩展”插件,其中包含了捕获日志数据的代码。请看下面的两个插件和片段。
rcp_external_log4j (plugin containing the jar file)
log4j-1.2.16.jar
rcp_external_log4j_fragment (containing the log4j.properties file)
log4j.properties (which points to VirtualConsol)
rcp_external_log4j_extension (plugin containing the VirtualConsol)
src/VirtualControl.java (which extends ConsoleAppender)当我在Eclipse调试环境中执行我的项目时,一切正常。VirtualConsole按预期转发所有日志数据。
但是,当我尝试使用“Eclipse产品导出向导”将项目导出到独立的可执行文件时,我会遇到以下问题:
Problem Occured
'Export Product' has encountered a problem.
A cycle was detected when generating the classpath
rcp_external_log4j_extension
rcp_external_log4j
rcp_external_log4j_extensionVirtualConsole扩展了ConsoleAppender,并从代码的其他部分调用。VirtualConsole位于rcp_external_log4j_extension中,由于ConsoleAppender的扩展而使用log4j。rcp_external_log4j使用rcp_external_log4j_extension,因为rcp_external_log4j插件与rcp_external_log4j_fragment捆绑在一起,rcp_external_log4j_fragment引用了log4j.properties文件中的VirtualConsole。
问:如何在没有循环依赖的情况下编写自己的ConsoleAppender?我能把代码放在片段里吗?我能把代码放在包含jar文件(rcp_external_log4j)的插件中吗?我试过两次,但都没成功.
感谢你的帮助
问题解决了。src与jar文件放在同一个插件中。
rcp_external_log4j (plugin containing the jar file)
log4j-1.2.16.jar
src/VirtualControl.java (which extends ConsoleAppender)
rcp_external_log4j_fragment (containing the log4j.properties file)
log4j.properties (which points to VirtualConsol)和“src”添加到rcp_external_log4j的类路径中。在MANIFEST.MF中被视为
Bundle-ClassPath: log4j-1.2.16.jar,
src/这样,可以同时从片段和其他代码中使用VirtualConsole。
build.properties应包括:
jars.compile.order = src/
source.src/ = src/
output.src/ = bin/用于导出产品中包含的代码。
发布于 2013-09-17 11:16:10
我认为rcp_external_log4j_fragment不需要在其构建路径中包含rcp_external_log4j_extension,只需要在清单中。这应该可以消除循环。
https://stackoverflow.com/questions/18846262
复制相似问题