2015-10-06 44 views
0

我正在使用grails 2.4.4並試圖在其中實現緩存。 我已經在lib文件夾和構建路徑中添加了cache-api.jar,並添加了一個maven依賴項編譯「org.jsr107.ri:cache-ri-impl:1.0.0-RC1」。 當我作爲grails run-app運行戰爭時,緩存工作正常。 但是當我在tomcat上部署相同的戰爭時,它給了我以下例外。用Cache實現的war文件在grails 2.4.4上正常工作,但在tomcat 7上失敗

[http-apr-9090-exec-2] ERROR errors.GrailsExceptionResol 
ver - NoSuchMethodError occurred when processing request: [POST] /pharma/login 
javax.cache.CacheManager.createCache(Ljava/lang/String;Ljavax/cache/configuratio 
n/Configuration;)Ljavax/cache/Cache;. Stacktrace follows: 
org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionExcepti 
on: Executing action [login] of controller [pharma.PharmaController] ca 
used exception: Runtime error executing action 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecu 
tionException: Runtime error executing action 
     ... 3 more 
Caused by: java.lang.reflect.InvocationTargetException 
     ... 3 more 
Caused by: java.lang.NoSuchMethodError: javax.cache.CacheManager.createCache(Lja 
va/lang/String;Ljavax/cache/configuration/Configuration;)Ljavax/cache/Cache; 
     at trident.TridentCache.getCache(TridentCache.java:32) 
     at trident.pharma.PharmaService.login(PharmaService.groovy:107) 
     at trident.pharma.PharmaController.login(PharmaController.groovy:46) 
     ... 3 more 

什麼令我感到困惑的是戰爭中的Grails環境工作正常,並緩存實現也完美的作品,但部署在Tomcat上,當同一場戰爭,它拋出上述異常。

回答

0

不知道使用哪個版本的grails,tomcat和jdK到位很難理解正在發生的事情,但只看異常似乎是您的Grails實現和您使用的Tomcat有兩個不同版本的javax。 cache.CacheManager類。

因此缺少方法...

更新:你提到org.jsr107.ri包:緩存裏,IMPL:1.0.0-RC1使用javax.cache»緩存API 1.0.0 -rc1

特定版本擁有的CacheManager類

<K, V, C extends Configuration<K, V>> Cache<K, V> createCache(String cacheName, 
                  C configuration) 
    throws IllegalArgumentException; 
+0

的Grails 2.4.4,Tomcat的7.0.61這個方法的簽名,JDK7 – sashmi

+0

好吧,我說我在你提到的庫中找到。一旦進入tomcat,我建議再次檢查庫的路徑。確保該jar文件位於正確的tomcat/lib或tomcat/webapps//WEB-INF/lib文件夾中,並仔細檢查該版本是否仍然是1.0.0-RC1。最後一個檢查可能是得到你的項目的maven-tree,看看是否有不同版本的同一個庫已經被其他一些依賴項包含了 – gmconte

+0

非常感謝...我在/ WEB-INF/lib中發現了這個問題....還有另一個導致問題的cache-api-0.9 jar。我刪除了那個jar,它工作得很好。只是想知道爲什麼這不會導致Grails環境問題。 – sashmi

相關問題