java.lang.ClassNotFoundException:ch.qos.logback.classic.spi.ThrowableProxy?

时间:2015-09-09 10:30:41

标签: java

在启动我的weblogic时(我的app war文件包含logback-classic-1.0.1.jar),我得到的是异常。任何建议?

<Sep 9, 2015 9:27:13 AM UTC> <Warning> <Common> <BEA-000632> <Resource Pool "JDBC Data Source-0" shutting down, ignoring 3 resources still in use by applications..>
Exception in thread "Thread-12" java.lang.NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy
        at ch.qos.logback.classic.spi.LoggingEvent.<init>(LoggingEvent.java:125)
        at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:468)
        at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:424)
        at ch.qos.logback.classic.Logger.log(Logger.java:824)
        at org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:415)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:114)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.cache.interceptor.CacheInterceptor$1.invoke(CacheInterceptor.java:58)
        at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:213)
        at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
        ................
        at java.lang.Thread.run(Thread.java:701)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.spi.ThrowableProxy
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:52)
        ... 18 more
Exception in thread "Thread-18" java.lang.NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy
        at ch.qos.logback.classic.spi.LoggingEvent.<init>(LoggingEvent.java:125)
        at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:468)
        at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:424)
        at ch.qos.logback.classic.Logger.log(Logger.java:824)
        at org.apache.commons.logging.impl.SLF4JLocationAwareLog.error(SLF4JLocationAwareLog.java:225)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:415)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:114)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.cache.interceptor.CacheInterceptor$1.invoke(CacheInterceptor.java:58)
        at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:213)
        at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
        .......................
        at java.lang.Thread.run(Thread.java:701)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.spi.ThrowableProxy
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:52)
    ... 18 more

9 个答案:

答案 0 :(得分:8)

我从Dropwizard服务器突破(ctrl-c)时遇到同样的错误,我终于明白了为什么我会得到它。

我的Dropwizard构建成一个胖jar,我使用Gradle构建,当我在本地计算机上运行服务器时,我直接从build / libs / ... fat.jar

运行它

所以当我更改了源代码,再次构建app-server,并且Gradle覆盖了我正在运行的同一个jar&#34; java -jar ...&#34;时,会出现此异常,所以它&# 39;在那个会话之前没有使用的类不会加载,这并不奇怪:)

答案 1 :(得分:6)

在执行期间重建,删除或更新spring应用程序jar时会发生此错误。

参考:https://github.com/spring-projects/spring-boot/issues/4968

答案 2 :(得分:5)

当类路径不包含此类时会发生此类异常。
如果jar类位于类路径中,则需要注意在运行时使用的类路径应用程序。实际上,通常,classpath可以在运行时被覆盖,或者只是您可以使用不同的(例如,在启动脚本中)。

答案 3 :(得分:2)

对我们来说,这似乎意味着“你的文件句柄用完了,增加了你的打开文件句柄限制。” (正在创建太多套接字,全部使用它们)。相信原始答案here

我见过的其他事情:确保你的春季靴子是at least 1.3.8

还要确保下面的罐子没有被覆盖/更改/不稳定的文件系统。 FWIW。

答案 4 :(得分:2)

我在使用 Spring Boot 版本 2.3.5.RELEASE 的 Spring Boot 应用程序中遇到了这个运行时错误。通过在我的 build.gradle 文件中添加以下依赖项来解决。

compile group: 'ch.qos.logback', name: 'logback-classic', version:  '1.2.3'
compile group: 'ch.qos.logback', name: 'logback-core', version:  '1.2.3'

答案 5 :(得分:0)

缺少的类肯定存在于您拥有的JAR中,我检查了logback-classic-1.0.1.jar:

2012-03-07 07:34:18 .....         4729         2018  ch\qos\logback\classic\spi\ThrowableProxy.class

确保您的类路径设置正确。顺便说一句:如果可能的话,更新logback,因为这个版本已经有3年了。

答案 6 :(得分:0)

我看到两个选项(还没有足够的信息): 1.它在加载时发生,我打赌类路径,看到上面的答案。 2.经过一段时间后,当应用程序运行时(我的情况),请阅读下一段。

当我找到类没有找到错误并且同时出现与你相同的错误时,会发出相当大的错误,设备上没有剩余空间,即完整磁盘,满内存。

我的环境,是春季启动,自动包含logback,在maven中有重新包装,因此我需要包含的wverithing。 我的应用程序运行20分钟左右后出现此错误,有数千个线程。如果您不限制虚拟机器的内存,即使没有必要,它也会变得非常高。

一次(2天前)我花了3个小时环顾claspath stuf,...问题是全盘

答案 7 :(得分:0)

如果您确切地确保logback-class和logback-core已经在您的类路径中。见下文。 在您的Logback.xml中,您需要添加 debug =&#34; true&#34;

<configuration debug="true">

我遇到了问题&#39; java.lang.NoClassDefFoundError:ch / qos / logback / classic / spi / ThrowableProxy&#39;在我的tomcat。 但是,在添加debug =&#39; true&#39;之后,一切正常。

答案 8 :(得分:0)

我通过执行“ mvn install”而不是“ mvn clean install”解决了这个问题。