当前位置: 首页 > 知识库问答 >
问题:

Log4j兼容性/bridge API类强制转换异常

郭瀚海
2023-03-14

我正试图通过1将一些遗留代码迁移到log4j2.6。x=

在旧代码中,我有一个扩展org.apache.log4j的类。记录仪。当添加2.6 core/api jar以及桥api jar到我的类路径时,我有一个单元测试由于类转换异常而失败:

java.lang.ClassCastException: org.apache.log4j.Logger cannot be cast to com.example.MyLogger

MyLogger的类签名是

package com.example;
import org.apache.log4j.Logger;
public class MyLogger extends Logger {
}

它只适用于log4j1.2,旧的类(org.apache.log4j.Logger)在bridge jar中,由于MyLogger isa Logger,所以您希望它仍然可以工作。

你知道为什么这不起作用吗?

共有1个答案

朱鹤轩
2023-03-14

这发生在运行时,因为代码正在操作一个不是MyLogger实例的Logger对象。我首先检查代码中是否只构造MyLogger实例。调试器在这里很有帮助,避免使用printStackTrace也是如此。

 类似资料:
  • 例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g

  • 问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何

  • 线程“main”java.lang.ClassCastException:java.base/jdk.internal.loader.ClassLoaders$AppClassLoader不能强制转换为java.base/java.net.urlClassLoader(位于org.springframework.boot.devtools.restart.defaultrestartinitial

  • 我模拟了Jsch()类,并在下面的方法中获得了类强制转换异常。 原始方法。 联机获取Mockito异常。 例外情况: java.lang.ClassCastException:com.jcraft.jsch。频道$MockitoMock$1983492043不能转换为com.jcraft.jsch.ChannelSftp 测试用例调用方法。

  • null null application.properties log4j.properties 我试图找到一个解决方案,看了论坛上类似的话题,尝试了各种排除依赖关系的选择。 错误StatusLogger无法识别格式说明符[n]错误StatusLogger无法识别转换说明符[n]从转换模式中的位置56开始。警告:不支持Sun.Reflect.Reflection.GetCallerClass。这