Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NoClassDefFoundError:net/sf/ehcache/concurrent/ReadWriteLockSync_Java_Spring Boot_Spring Data Jpa_Spring Cache - Fatal编程技术网

java.lang.NoClassDefFoundError:net/sf/ehcache/concurrent/ReadWriteLockSync

java.lang.NoClassDefFoundError:net/sf/ehcache/concurrent/ReadWriteLockSync,java,spring-boot,spring-data-jpa,spring-cache,Java,Spring Boot,Spring Data Jpa,Spring Cache,我有一个运行java8的SpringBoot应用程序。它运行良好,但有时会抛出以下错误 java.lang.NoClassDefFoundError: net/sf/ehcache/concurrent/ReadWriteLockSync at net.sf.ehcache.store.MemoryStore$LockProvider.getSyncForKey(MemoryStore.java:1038) at net.sf.ehcache.Cache.tryRemoveImmediately

我有一个运行java8的SpringBoot应用程序。它运行良好,但有时会抛出以下错误

java.lang.NoClassDefFoundError: net/sf/ehcache/concurrent/ReadWriteLockSync
at net.sf.ehcache.store.MemoryStore$LockProvider.getSyncForKey(MemoryStore.java:1038)
at net.sf.ehcache.Cache.tryRemoveImmediately(Cache.java:2170)
at net.sf.ehcache.Cache.get(Cache.java:1756)
at org.springframework.cache.ehcache.EhCacheCache.lookup(EhCacheCache.java:142)
at org.springframework.cache.ehcache.EhCacheCache.get(EhCacheCache.java:67)
at org.springframework.cache.interceptor.AbstractCacheInvoker.doGet(AbstractCacheInvoker.java:73)
at org.springframework.cache.interceptor.CacheAspectSupport.findInCaches(CacheAspectSupport.java:527)
at org.springframework.cache.interceptor.CacheAspectSupport.findCachedItem(CacheAspectSupport.java:492)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:374)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:316)
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)

任何帮助都将不胜感激

NoClassDefFoundError
发生在类在编译时可用,并且程序已成功编译和链接,但类在运行时丢失的情况下

可能的解决办法:

这里您使用的是
EhCache
,因此您可能对此有一些依赖性。将
EhCache
jar
从存储库复制到您的项目文件夹(可能是
lib
文件夹,您可以将其添加到
build path
)。现在,您显式地给出了
jar
文件,这样您就可以注释相应的依赖项,或者提供它的作用域


现在,您可以尝试查看是否再次出现错误。:)

NoClassDefFoundError
发生在类在编译时可用,并且程序已成功编译和链接,但类在运行时丢失的情况下

可能的解决办法:

这里您使用的是
EhCache
,因此您可能对此有一些依赖性。将
EhCache
jar
从存储库复制到您的项目文件夹(可能是
lib
文件夹,您可以将其添加到
build path
)。现在,您显式地给出了
jar
文件,这样您就可以注释相应的依赖项,或者提供它的作用域


现在,您可以尝试查看是否再次出现错误。:)

EhCache在版本2和版本3之间更改了包名

net.sf.ehcache
引用了EhCache2中的包(您的应用程序正在尝试查找此版本)

org.ehcache
指新的EhCache3

可能是您的代码使用了EhCache2,现在已经失去了依赖关系。例如,如果您尝试将
Spring Boot 1.5
更新为
Spring Boot 2

要进行进一步的测试,请尝试在
pom.xml
中使用以下依赖项强制使用EhCache2:

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.5</version>
    </dependency>

net.sf.ehcache
ehcache
2.10.5

EhCache在版本2和版本3之间更改了包名

net.sf.ehcache
引用了EhCache2中的包(您的应用程序正在尝试查找此版本)

org.ehcache
指新的EhCache3

可能是您的代码使用了EhCache2,现在已经失去了依赖关系。例如,如果您尝试将
Spring Boot 1.5
更新为
Spring Boot 2

要进行进一步的测试,请尝试在
pom.xml
中使用以下依赖项强制使用EhCache2:

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.5</version>
    </dependency>

net.sf.ehcache
ehcache
2.10.5

谢谢您的回复。但如上所述,应用程序运行成功,但在数小时/天甚至数月后,它开始抛出此错误。我的所有代码,包括依赖项,都存在于一个jar文件中。所以问题是:即使不重新运行应用程序,它也会抛出错误。在运行它之后,它会完美地工作一段时间,然后出现错误。是吗?它开始突然抛出错误,如果我重新启动,错误就会消失。因此,我不知道这背后的原因是什么。有一种可能性是,只有在某些情况下,您的代码使用的是特定的类,当这种情况发生时,您会得到异常。所以你可以用那种方式调试。试着找出是哪段代码导致了这种情况,然后试着找出该代码的执行时间(不是时间,而是测试用例)。所以,若结果为正,那个么jar(或者至少是类)将丢失。还要确保您使用的是最合适的jar版本。谢谢您的建议。错误与Ehcache有关,它不是一个孤立的代码,很少被调用,每个请求都会通过它。我正在调查此事,并将分享我的发现谢谢你的回复。但如上所述,应用程序运行成功,但在数小时/天甚至数月后,它开始抛出此错误。我的所有代码,包括依赖项,都存在于一个jar文件中。所以问题是:即使不重新运行应用程序,它也会抛出错误。在运行它之后,它会完美地工作一段时间,然后出现错误。是吗?它开始突然抛出错误,如果我重新启动,错误就会消失。因此,我不知道这背后的原因是什么。有一种可能性是,只有在某些情况下,您的代码使用的是特定的类,当这种情况发生时,您会得到异常。所以你可以用那种方式调试。试着找出是哪段代码导致了这种情况,然后试着找出该代码的执行时间(不是时间,而是测试用例)。所以,若结果为正,那个么jar(或者至少是类)将丢失。还要确保您使用的是最合适的jar版本。谢谢您的建议。错误与Ehcache有关,它不是一个孤立的代码,很少被调用,每个请求都会通过它。我正在调查,并将与大家分享我的发现我的解决方案有什么反馈吗?你对我的解决方案有什么反馈吗?