2011-04-11 67 views
1

我得到了它根據Apache的支持這個錯誤是在GlassFish有關,而不是OpenJPA的一個問題:JSF 2 OpenJPA的2 Glassfish的3.1 WEB9031錯誤

java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [org.apache.openjpa.util.LongId], because it has not yet been started, or was already stopped 

堆棧跟蹤是:

Caused by: java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [org.apache.openjpa.util.LongId], because it has not yet been started, or was already stopped 
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1410) 
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368) 
    at com.ckd.model.BookModel.pcNewObjectIdInstance(BookModel.java) 
    at org.apache.openjpa.enhance.PCRegistry.newObjectId(PCRegistry.java:138) 
    at org.apache.openjpa.meta.MetaDataRepository.processRegisteredClass(MetaDataRepository.java:1693) 
    at org.apache.openjpa.meta.MetaDataRepository.processRegisteredClasses(MetaDataRepository.java:1643) 
    ... 112 more 

有沒有人在之前遇到這個問題以及如何解決它?過去幾天我一直在這個問題上停滯不前。

我的另一個帖子與此問題有關:JSF 2: h:link and getrowdata

回答

1

上述錯誤與OpenJPA增強器的問題有關。當您執行Sun的JDK時,OpenJPA的動態增強器默認啓動。這個動作反過來會造成Glassfish的類加載器類錯誤 - 因此,這個錯誤會導致錯誤。

對於那些誰遇到同樣的問題,一個簡單的解決方法是做增強在編譯的時候 - 這是我在做ANT與org.apache.openjpa.ant.PCEnhancerTask - 這屬性添加到您的的persistence.xml以關閉動態增強: <property name="openjpa.DynamicEnhancementAgent" value="false"/>

而且,它不會傷害你的的persistence.xml以及<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />拋出此。