gpt4 book ai didi

java - Eclipse RCP中定制的ConsoleAppender给出了循环依赖

转载 作者:行者123 更新时间:2023-12-01 04:21:35 25 4
gpt4 key购买 nike

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

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_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 文件放在同一个插件中。

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/

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

最佳答案

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

关于java - Eclipse RCP中定制的ConsoleAppender给出了循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18846262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com