2013-08-02 49 views
3

在運行我的Java/AppEngine應用程序時在日誌文件中發現問題。在哪裏檢查所述多個JAR版本?DataNucleus/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 
+0

我假設你使用的是JDO? 你是否在使用Maven? –

+0

還發布了/ war/WEB-INF/lib中所有jar的列表 –

回答

-2

消息內容如何?

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. 

有在classpath中引入兩個版本相同的罐子(因此類重複)是要避免

0

我有同樣的問題

添加相同DataNucleus將核心依賴於plugin-config解決了這個問題:

 <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>