Java DataNucleus/AppEngine-类路径中同一插件的多个JAR版本
运行Java/AppEngine应用程序时在日志文件中发现问题。在哪里检查所述多个JAR版本Java DataNucleus/AppEngine-类路径中同一插件的多个JAR版本,java,google-app-engine,datanucleus,Java,Google App Engine,Datanucleus,运行Java/AppEngine应用程序时在日志文件中发现问题。在哪里检查所述多个JAR版本 java.lang.RuntimeException: Unexpected exception at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:76) at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java
java.lang.RuntimeException: Unexpected exception
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:76)
at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java:71)
at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:51)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74)
... 2 more
Caused by: org.datanucleus.exceptions.NucleusException: Plugin (Bundle) "org.datanucleus" is already registered. Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL "file:/opt/appengine-java-sdk-1.8.2/lib/opt/user/datanucleus/v1/datanucleus-core-1.1.5.jar" is already registered, and you are trying to register an identical plugin located at URL "file:/opt/appengine-java-sdk-1.8.2/lib/opt/tools/datanucleus/v2/datanucleus-core-3.1.3.jar."
at org.datanucleus.plugin.NonManagedPluginRegistry.registerBundle(NonManagedPluginRegistry.java:541)
at org.datanucleus.plugin.NonManagedPluginRegistry.registerBundle(NonManagedPluginRegistry.java:395)
at org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensions(NonManagedPluginRegistry.java:219)
at org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensionPoints(NonManagedPluginRegistry.java:160)
at org.datanucleus.plugin.PluginManager.<init>(PluginManager.java:65)
at org.datanucleus.plugin.PluginManager.createPluginManager(PluginManager.java:427)
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:224)
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:204)
at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:160)
at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1133)
... 7 more
java.lang.RuntimeException:意外异常
位于com.google.appengine.tools.enhancer.enhancer.execute(enhancer.java:76)
位于com.google.appengine.tools.enhancer.Enhance.(Enhance.java:71)
位于com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:51)
原因:java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于com.google.appengine.tools.enhancer.enhancer.execute(enhancer.java:74)
... 还有两个
原因:org.datanucleus.exceptions.NucleusException:Plugin(Bundle)“org.datanucleus”已注册。确保类路径中没有同一插件的多个JAR版本。URL“file:/opt/appengine-java-sdk-1.8.2/lib/opt/user/datanucleus/v1/datanucleus-core-1.1.5.jar”已经注册,您正在尝试注册位于URL“file:/opt/appengine-java-sdk-1.8.2/lib/opt/tools/datanucleus/v2/datanucleus-core-3.1.3.jar”的相同插件
位于org.datanucleus.plugin.NonManagedPluginRegistry.registerBundle(NonManagedPluginRegistry.java:541)
位于org.datanucleus.plugin.NonManagedPluginRegistry.registerBundle(NonManagedPluginRegistry.java:395)
位于org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensions(NonManagedPluginRegistry.java:219)
位于org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensionPoints(NonManagedPluginRegistry.java:160)
位于org.datanucleus.plugin.PluginManager.(PluginManager.java:65)
位于org.datanucleus.plugin.PluginManager.createPluginManager(PluginManager.java:427)
位于org.datanucleus.NucleusContext(NucleusContext.java:224)
位于org.datanucleus.NucleusContext(NucleusContext.java:204)
位于org.datanucleus.enhancer.DataNucleusEnhancer.(DataNucleusEnhancer.java:160)
位于org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1133)
... 还有7个
消息内容如何
The URL "file:/opt/appengine-java-sdk-1.8.2/lib/opt/user/datanucleus/v1/datanucleus-core-1.1.5.jar" is already registered, and you are trying to register an identical plugin located at URL "file:/opt/appengine-java-sdk-1.8.2/lib/opt/tools/datanucleus/v2/datanucleus-core-3.1.3.jar.
在类路径中使用两个版本的同一jar(从而避免类的重复)我也有同样的问题
将相同的datanucleus核心依赖项添加到插件配置解决了问题:
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>${datanucleus.jpa.version}</version>
<configuration>
<api>JPA</api>
<persistenceUnitName>gae-persistence</persistenceUnitName>
<!-- <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration> -->
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>${datanucleus.jpa.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
org.datanucleus
maven datanucleus插件
${datanucleus.jpa.version}
JPA
gae持久性
真的
org.datanucleus
数据核核心
${datanucleus.jpa.version}
进程类
增强
我假设您正在使用JDO?您是否碰巧使用了Maven?同时在/war/WEB-INF/lib中发布所有JAR的列表