У меня есть класс Java, который имеет статическую реализацию, которая извлекает конфигурацию кэша и его экземпляр, как показано ниже:NoClassDefFoundError с новой Ehcache конфигурации
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import org.apache.log4j.Logger;
import java.net.URL;
public final class MyCacheImplementation {
private MyCacheImplementation() {
super();
}
private static Cache myCache;
private static final String EHCACHFILENAME = "....... ehcache.xml";
static {
try {
final URL url = MyCacheImplementation.class.getClassLoader().getResource(EHCACHFILENAME);
final CacheManager cacheManager = new CacheManager(url);
myCache = cacheManager.getCache("myCacheName);
} catch (final Exception e) {
throw new RuntimeException("Error initializing Ehcache", e);
}
}
public static void addItemToCache(final Object obj) {
myCache.put(new Element("obj1234", obj));
}
public static Cache getMyCache() {
return myCache;
}
}
Я тогда есть класс, что ссылка выше класс статически и запрашивает кэш, как показано ниже:
final MyCacheImplementation cacheReference = MyCacheImplementation.getMyCache();
Моя конфигурация кэша выглядит следующим образом:
<ehcache>
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120" />
<cache name="myCacheName" maxElementsInMemory="1000"
eternal="false" overflowToDisk="false" timeToIdleSeconds="18000"
diskPersistent="false"
timeToLiveSeconds="18000" />
</ehcache>
Все работает так, как ожидалось, и я могу получить доступ к кешу таким образом.
Затем мы обновили наш Ehcache версии 2.9 и выключила дисковые магазины ака изменения выше конфигурации выглядеть следующим образом:
<ehcache>
<defaultCache maxElementsInMemory="10000" timeToIdleSeconds="120" timeToLiveSeconds="120">
<persistence strategy="none" />
</defaultCache>
<cache name="myCacheName" maxElementsInMemory="1000" timeToIdleSeconds="18000" timeToLiveSeconds="18000">
<persistence strategy="none" />
</cache>
</ehcache>
Теперь, если я бегу то же самое, что и выше я получаю java.lang. NoClassDefFoundError: Не удалось инициализировать ошибку класса NoClassDefinition. Если я откажу конфигурацию EHCache до того, что она работает, она отлично работает. Любая идея, что может быть неправильно с этим конфигом? У меня есть серверные другие места в нашем коде, где конфигурация точно такая же и что не вызывает никаких проблем?
Можете ли вы опубликовать трассировку стека ошибки, которую вы получаете? –