gpt4 book ai didi

java - 处理元素 XXX 时出错 : CLASS_NOT_FOUND

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:17 27 4
gpt4 key购买 nike

作为我工作的一部分,我正在创建 log4j2 与我们公司自己的自定义日志记录服务的简单集成。为此,我创建了两个类:ECSAppender 和 ECSLog。

ECSLog 是一个简单的类,其属性用于标准化每个日志的内容。XXXAppender是一个Appender,它将日志发送到我们公司的Web服务,将日志集中在一处。

我已经完成了产品并在同一个项目中对其进行了测试,并且运行良好。但是,当我尝试将类打包到 jar 中并将其导入到另一个项目中(这就是我们要求开发人员执行的操作)时,log4j2 无法找到 jar 中定义的类。我知道程序正在识别这些类,因为我能够调用并运行 ECSLog 类的方法(简单的打印)。

要使 jar 中的 Appender 能够被 log4j2 识别,需要进行哪些配置?

我尝试过:通过 java cvf、maven clean package 创建一个 jar,并进入 jar 并编辑 MANIFEST 以包含“Multi-Release:true”。

这些选项都不会使该类对 log4j2 可见。

日志类和 Appender 工作正常。我的 log4j2.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG" packages="ECSLogging">
<Appenders>
<ECSAppender name="ECSAppender">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n</pattern>
</PatternLayout>
</ECSAppender>
</Appenders>
<Loggers>
<AsyncLogger name="ECSLogger" level="DEBUG" includeLocation="true">
<AppenderRef ref="ECSAppender"/>
</AsyncLogger>
</Loggers>
</Configuration>

我遇到的错误:

2019-11-12 09:32:26,423 ERROR Error processing element ECSAppender: CLASS_NOT_FOUND

我希望 log4j2 能够识别我构建的附加程序,即使它位于 jar 中。

最佳答案

感谢@ptomli 的帮助。原来我打包的 .jar 错误。我采取的解决步骤:1. 选择项目 A(正在运行的项目)并删除包含 main 方法的包。2. 使用 mvn clean package 生成该新项目的 jar。3. 将该 jar 导入到项目 B 中。

关于java - 处理元素 XXX 时出错 : CLASS_NOT_FOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58821105/

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