当前位置: 首页 > 面试题库 >

使用自定义类加载器配置org.apache.log4j.ConsoleAppender

刘阳荣
2023-03-14
问题内容

我有一个Java类,它在启动时基于javassist类加载器创建自定义类加载器,然后运行实际的程序类。我收到以下错误:

log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a        
"org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
log4j:ERROR [javassist.Loader@6f97b10a] whereas object of type 
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by 
[java.net.URLClassLoader@5b414a8d].
log4j:ERROR Could not instantiate appender named "stdout".

该问题与以下事实有关:一个对象是由原始类加载器创建的,而另一个是由自定义类创建的。
有没有办法解决此错误?

在此先感谢
Avner


问题答案:

请尝试将-Dlog4j.ignoreTCL =true设置为希望有帮助。关于log4j的类似问题



 类似资料:
  • 我一直在Java玩简单的自定义类加载器,到目前为止,对于非模块相关的类来说,一切都按照预期工作。但是,我似乎找不到任何方法来使用我的类加载器从模块加载类,即使与模块相关的方法已经被重载。我尝试做的是从模块“HelloModularWorld”加载一个类,并运行它的main。然而,当我指定包所在的目录时,它将“正常”加载,并报告为在未命名模块中。我错过了什么? 类加载器只是从文件系统的其他地方加载类

  • 问题内容: 是否可以为javac(或某些替代的Java编译器)指定自定义类加载器? 我很喜欢这种壮举,因为它可以让我编译使用仅由我的特殊类加载器找到的类的类。 对于那些好奇的人:我将编写一个连接数据库的classloder,并根据找到的表创建类。 问题答案: 运行javac时,您可以像这样指定类加载器:

  • 本文向大家介绍java 类加载与自定义类加载器详解,包括了java 类加载与自定义类加载器详解的使用技巧和注意事项,需要的朋友参考一下 类加载 所有类加载器,都是ClassLoader的子类。 类加载器永远以.class运行的目录为准。 读取classpath根目录下的文件有以下几种方式: 1 在Java项目中可以通过以下方式获取classspath下的文件: 在Tomcat中tomcat又声明了

  • 我想提供一个特定的Bean,以便这个Bean覆盖Spring Cloud AutoConfiguration类中的Bean。 我还尝试使用自动配置。但是甚至注释也被忽略。 我的配置类bean总是在KubernetesClientAutoConfiguration类中的bean之后实例化。因此,AutoConfiguration类不使用我的bean。 文档说:在任何时候,您都可以开始定义自己的配置,

  • 我们正在将一个应用程序从JBoss迁移为6到7。 这个新实例正在使用独立的ha配置文件。在以前的版本中,我们使用了一个自定义的Infinispan加载器,它将缓存条目存储到我们的自定义数据库中。 现在,在JBoss 7.1上,当尝试使用可视化管理控制台更改此配置时,它不起作用。我们在“复制缓存”的选项卡“Store Class Impl”上键入的值没有按应有的方式存储在配置文件配置中。所以,这是我

  • 我试图修改几个类的字节代码,这些类的打包jar文件不在类路径中-它们是在给定URL的运行时由自定义的加载的。我尝试使用和来拦截那些类,但失败了。类加载器是遗留项目的一部分,因此我无法直接对其进行更改。 代理可以很好地处理AppClassLoader“本地”加载的类,但只会忽略那些由自定义类加载器加载的类。 CustomClassLoader: 我的代理中使用的ClassFileTransforme