Java DataNucleus/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/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: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的列表