2016-05-05 5 views
1

Ich versuche, ehcache in meiner Android App zu verwenden. Es schlägt in der ersten Zeile fehl. Das hat also nichts mit einer schlechten Cache-Konfiguration zu tun. Ich plane, Cache programmatisch zu konfigurieren, also habe ich keine Config-Dateien. Alles, was ich getan habe, war, ehcache als Abhängigkeit hinzuzufügen und die Methode unten aufzurufen. Mit ehcache 2.10.2java.lang.NullPointerException: parentLoader == null &&! NullAllowed

 CacheManager singletonManager = CacheManager.create(); 

Stacktrace:

W/System.err: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
W/System.err: SLF4J: Defaulting to no-operation (NOP) logger implementation 
W/System.err: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
E/AndroidRuntime: FATAL EXCEPTION: Thread-158 
Process: test.app, PID: 7275 
java.lang.ExceptionInInitializerError 
at net.sf.ehcache.config.Configuration.<init>(Configuration.java:208) 
at net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:152) 
at net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:103) 
at net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:140) 
at net.sf.ehcache.CacheManager.newInstance(CacheManager.java:892) 
at net.sf.ehcache.CacheManager.create(CacheManager.java:873) 
at test.app.MyCache.setup(MyCache.java:20) 

Caused by: java.lang.NullPointerException: parentLoader == null && !nullAllowed 
at java.lang.ClassLoader.<init>(ClassLoader.java:210) 
at java.lang.ClassLoader.<init>(ClassLoader.java:202) 
at net.sf.ehcache.EhcacheDefaultClassLoader.<init>(EhcacheDefaultClassLoader.java:35) 
at net.sf.ehcache.EhcacheDefaultClassLoader.<clinit>(EhcacheDefaultClassLoader.java:26) 
at net.sf.ehcache.config.Configuration.<init>(Configuration.java:208)  
at net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:152)  
at net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:103)  
at net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:140)  
at net.sf.ehcache.CacheManager.newInstance(CacheManager.java:892)  
at net.sf.ehcache.CacheManager.create(CacheManager.java:873)  
at test.app.MyCache.setup(MyCache.java:20)  

Antwort

0

Versuchen Sie folgendes:

CacheManager singletonManager = CacheManager.getInstance(); 

Nicht: create()

EDIT:

Sie haben Recht. Immer noch das gleiche Problem. Ich habe es versucht

Failed to load class "org.slf4j.impl.StaticLoggerBinder". 

Dies bedeutet, es gab keine SLF4J Bindung.

Platzieren eines (und nur einer) der slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar oder logback-classic.jar auf dem Klassenpfad sollten die Lösung Problem

Hier ist die link.
sicherstellen, dass Sie nur ein Glas

EDIT 2 hinzufügen:

, wenn Sie die Config-Warnung entfernen möchten, ehcache.xml Datei hinzufügen. Hier ist ein Beispiel:

<defaultCache 
    maxElementsInMemory="10000" 
    eternal="false" 
    timeToIdleSeconds="120" 
    timeToLiveSeconds="120" 
    overflowToDisk="true" 
    maxElementsOnDisk="10000000" 
    diskPersistent="false" 
    diskExpiryThreadIntervalSeconds="120" 
    memoryStoreEvictionPolicy="LRU" 
/> 

Probieren Sie es aus.

+0

dasselbe Problem. Nach der Überprüfung, getInstance nur Anrufe erstellen – user1159819

+0

Überprüfen Sie meine bearbeitete Antwort. Ich versuchte es. es behebt das Problem –

+0

Das behebt das Problem nicht für mich, obwohl der SLF4J-Konfigurationsfehler wegging. Ich sehe das im Protokoll, aber ich glaube nicht, dass ich mich darum kümmern muss: System.err: [main] WARN net.sf.ehcache.config.ConfigurationFactory - Keine Konfiguration gefunden. Konfigurieren von ehcache aus ehcache-failsafe.xml im Klassenpfad: jar: file: /data/app/test.app-2/base.apk! /ehcache-failsafe.xml – user1159819