gpt4 book ai didi

java - 即使在创建对象之后也会抛出 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-11-30 04:53:13 25 4
gpt4 key购买 nike

我收到了 NoClassDefFoundError org.apache.commons.logging.LogFactory 上的异常在我已经创建了一个实例之后。我可以创建一个LogFactory对象很好并获得 org.apache.commons.logging.Log 的实例但是当创建 org.apache.axis.description.TypeDesc 类型的对象时,一个NoClassDefFoundError当此类尝试获取 org.apache.commons.logging.Log 的实例时抛出该异常来自LogFactory 。似乎应该在第 284 行抛出异常。(?)

这是我的代码(DtUiLoggingRequest 第 282 至 294 行);

log.debug("vvvvvvvvvvvvvvvv");

org.apache.commons.logging.LogFactory logFactory = (org.apache.commons.logging.LogFactory)LogFactory.getFactory();
Log myLog = LogFactory.getLog(DtUiLoggingRequest.class.getName());

log.debug(logFactory.getClass().getName());
log.debug(myLog.getClass().getName());

myLog.debug("This is coming from 'myLog'");

log.debug("^^^^^^^^^^^^^^^^");

typeDesc = new org.apache.axis.description.TypeDesc(DtUiLoggingRequest.class);

日志内容如下;

DEBUG   2012-02-23 09:32:08,739 vvvvvvvvvvvvvvvv  
DEBUG 2012-02-23 09:32:08,739 org.apache.commons.logging.impl.LogFactoryImpl
DEBUG 2012-02-23 09:32:08,739 org.apache.commons.logging.impl.Log4JLogger
DEBUG 2012-02-23 09:32:08,739 ^^^^^^^^^^^^^^^^
ERROR 2012-02-23 09:32:08,739 Exception Details:
java.lang.NoClassDefFoundError: org.apache.commons.logging.LogFactory
at org.apache.axis.components.logger.LogFactory.class$(LogFactory.java:45)
at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
at org.apache.axis.description.TypeDesc.<clinit>(TypeDesc.java:61)
at com.symantec.cas.ucf.sensors.DtUiLoggingRrequest.initTypeDesc(DtUiLoggingRequest.java:294)
at com.symantec.cas.ucf.sensors.sap.DtUiLoggingRequest.<init>(DtUiLoggingRequest.java:58)
at com.symantec.cas.ucf.sensors.sap.SapSensor.OpenDevice(Sensor.java:151)
at com.symantec.cas.ucf.collector.SensorJob.openSensor(SensorJob.java:156)
at com.symantec.cas.ucf.collector.SensorJob.run(SensorJob.java:290)
at java.lang.Thread.run(Thread.java:662)

最佳答案

对我来说这看起来像是一个类加载器问题。您正在一个具有分层类加载器的系统中工作,例如 Web 应用程序,并且 Axis 正在由比 Commons Logging 状态更高的类加载器加载。这意味着,即使 Commons Logging 位于您的系统中,Axis 也不允许看到它。我的大胆猜测是,您正在从 JRE 扩展目录加载 Axis,但从您的 war 文件加载 Commons Logging。

关于java - 即使在创建对象之后也会抛出 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9416909/

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