错误处理元素XXX:CLASS_NOT_FOUND

问题描述 投票:1回答:1

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

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

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

使罐子中的Appender能够识别为log4j2需要哪些配置?

[我已经尝试过:通过java cvf,通过maven clean package创建jar,还进入jar并编辑清单以包括“ 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识别我构建的附加程序,即使它在罐子中。

java jar log4j log4j2
1个回答
0
投票

感谢@ptomli的帮助。原来我把.jar打包错了。我采取的解决步骤:1.参加项目A(正在运行的项目),并删除包含主要方法的软件包。2.使用mvn clean软件包生成该新项目的jar。3.将该罐子导入到项目B中。

© www.soinside.com 2019 - 2024. All rights reserved.