java.lang.NoClassDefFoundError: net / sf / ehcache / concurrent / ReadWriteLockSync - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть приложение SpringBoot, работающее с java8.Он работает хорошо, но иногда начинает выдавать следующую ошибку.

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)

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

EhCache изменил имя пакета с версии 2 на 3.

net.sf.ehcache ссылается на пакет в EhCache2 (ваше приложение пытается найти эту версию)

org.ehcache ссылается на новый EhCache3

Возможно, у вас есть код, работающий с EhCache2, и теперь он потерял зависимость.Это происходит, например, если вы пытаетесь обновить Spring Boot 1.5 до Spring Boot 2

Чтобы выполнить дальнейший тест, попробуйте принудительно установить EhCache2 в вашем pom.xml со следующей зависимостью:

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.5</version>
    </dependency>
0 голосов
/ 27 сентября 2018

NoClassDefFoundError происходит, когда класс доступен во время компиляции, и программа была скомпилирована и успешно связана, но класс пропадает во время выполнения.

Возможное решение:

Здесь вы используете EhCache, поэтому у вас может быть некоторая зависимость для этого.Скопируйте EhCache jar из репозитория в папку вашего проекта (это может быть папка lib, которую вы можете добавить в build path).Теперь вы явно указываете файл jar, чтобы вы могли либо прокомментировать соответствующую зависимость, либо указать ее область действия.

Теперь вы можете попробовать и увидеть, если вы получите ошибку снова.:)

...