gpt4 book ai didi

java - 如何在 Embedded JDK compact 中使用 log4j 1/2/3

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:15 30 4
gpt4 key购买 nike

我尝试将现有的 Java 项目移植到嵌入式环境中。但是我发现log4j-1.2.14在这样的环境下无法工作。因为它依赖于 Beans。

我构建了 EJDK8 compact 2 环境。关于 EJDK8 的更多信息:http://www.oracle.com/technetwork/java/embedded/resources/tech/compact-profiles-overview-2157132.html

启动项目时,有以下异常。

线程“main”中的异常 java.lang.NoClassDefFoundError: java/beans/IntrospectionException [java] 在 org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:649) [java] 在 org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:612) [java] 在 org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:509) [java] 在 org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:415) [java] 在 org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:441) [java] 在 org.apache.log4j.helpers.OptionConverter.selectAndConfigure (OptionConverter.java:470) [java] 在 org.apache.log4j.LogManager.(LogManager.java:122) [java] 在 org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:66) [java] 在 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270) [java] 在 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281) [java] 在 com.truviso.system.Application.(Application.java:36) [java] 引起:java.lang.ClassNotFoundException:java.beans.IntrospectionException [java] 在 java.net.URLClassLoader$1.run(未知来源) [java] 在 java.net.URLClassLoader$1.run(未知来源) [java] 在 java.security.AccessController.doPrivileged( native 方法) [java] 在 java.net.URLClassLoader.findClass(未知来源) [java] 在 java.lang.ClassLoader.loadClass(未知来源) [java] 在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源) [java] 在 java.lang.ClassLoader.loadClass(未知来源) [java] ... 11 更多

看了log4j源码,发现和java.beans.*有很多依赖关系。 EJDK 不支持 beans 命名空间。在这种情况下,我们可以使用什么样的日志记录框架? log4j 在许多库中被广泛使用。我们还有其他选择吗?

最佳答案

In this case, what kinds logging framework we could use? The log4j is widely used in many libraries. Do we have some other choices?

好吧,java.util.logging 在 compact1 配置文件中,所以这是一个明显的候选者。

但是,如果您使用的是直接依赖于 log4j 的库,那么您就会陷入困境。您要么需要“屠夫”log4j(坏主意),要么需要更改库的日志记录框架。如果您选择后者,请考虑将其更改为 slf4j ... 这将允许您使用各种“后端”日志记录框架,具体取决于您的应用程序或平台要求。

关于java - 如何在 Embedded JDK compact 中使用 log4j 1/2/3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907728/

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