首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse中的自定义ConsoleAppender提供循环依赖关系。

Eclipse中的自定义ConsoleAppender提供循环依赖关系。
EN

Stack Overflow用户
提问于 2013-09-17 09:35:57
回答 1查看 216关注 0票数 1

我正在开发一个Eclipse应用程序,我希望有一个定制的ConsoleAppender,这样我就可以将所有日志重定向到日志窗口。log4j插件和log4j片段(包含log4j.properties)创建了一个我成功使用的单元。我还创建了一个“扩展”插件,其中包含了捕获日志数据的代码。请看下面的两个插件和片段。

代码语言:javascript
复制
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产品导出向导”将项目导出到独立的可执行文件时,我会遇到以下问题:

代码语言:javascript
复制
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_extension

VirtualConsole扩展了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文件放在同一个插件中。

代码语言:javascript
复制
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中被视为

代码语言:javascript
复制
Bundle-ClassPath: log4j-1.2.16.jar,
 src/

这样,可以同时从片段和其他代码中使用VirtualConsole。

build.properties应包括:

代码语言:javascript
复制
jars.compile.order = src/
source.src/ = src/
output.src/ = bin/

用于导出产品中包含的代码。

EN

回答 1

Stack Overflow用户

发布于 2013-09-17 11:16:10

我认为rcp_external_log4j_fragment不需要在其构建路径中包含rcp_external_log4j_extension,只需要在清单中。这应该可以消除循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18846262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档