我收到了这个错误,根据Apache支持,这是一个与Glassfish而不是OpenJPA相关的问题:
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。
答案 0 :(得分:1)
上述错误与OpenJPA增强器的问题有关。当您执行Sun的JDK时,OpenJPA的动态增强器默认启动。反过来,这个动作会填满Glassfish的类加载器类 - 因此, WEB9031 错误。
对于遇到同样问题的人来说,一个简单的解决方法是在构建时进行增强 - 我在ANT中使用org.apache.openjpa.ant.PCEnhancerTask
进行了增强 - 并将此属性添加到 persistence.xml 关闭动态增强器:<property name="openjpa.DynamicEnhancementAgent" value="false"/>
。
此外,将此内容放入 persistence.xml 以及<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
也不会有什么坏处。