روايات متضاربة من محسن datanucleus في مشروع محرك جوجل التطبيق مخضرم

StackOverflow https://stackoverflow.com/questions/877949

سؤال

وأواجه إنشاء datanucleus محسن للاستخدام مع مشروع محرك جوجل التطبيق مشكلة. إذا كنت تستخدم الكسوف datanucleus المساعد كل شيء على ما يرام، ولكن في مشروع مخضرم لي أن أحصل على غريب خطأ نسخة متضاربة.

وبلدي POM له هذه المراجع datanucleus:

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>1.1.0</version>
</dependency>

...

<plugin>
    <groupId>org.datanucleus</groupId>
    <artifactId>maven-datanucleus-plugin</artifactId>
    <version>1.1.0</version>
    <configuration>
        <mappingIncludes>**/*.class</mappingIncludes>
        <verbose>true</verbose>
        <enhancerName>ASM</enhancerName>
        <api>JDO</api>
    </configuration>
    <executions>
        <execution>
        <phase>compile</phase>
        <goals>
            <goal>enhance</goal>
        </goals>
        </execution>
    </executions>
</plugin>

وعندما أحاول إنشاء المشروع أحصل على الخطأ التالي:

Exception in thread "main" Plugin (Bundle) "org.datanucleus" is already registered. 
Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL "file:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.0/**datanucleus-core-1.1.0.jar**" is already registered, and you are trying to register an identical plugin located at URL "file:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.3/**datanucleus-core-1.1.3.jar**."
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:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.0/datanucleus-core-1.1.0.jar" is already registered, and you are trying to register an identical plugin located at URL "file:/Users/drome/.m2/repository/org/datanucleus/datanucleus-core/1.1.3/datanucleus-core-1.1.3.jar."
at org.datanucleus.plugin.NonManagedPluginRegistry.registerBundle(NonManagedPluginRegistry.java:437)
at org.datanucleus.plugin.NonManagedPluginRegistry.registerBundle(NonManagedPluginRegistry.java:343)
at org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensions(NonManagedPluginRegistry.java:227
)
at org.datanucleus.plugin.NonManagedPluginRegistry.registerExtensionPoints(NonManagedPluginRegistry.jav
a:159)
at org.datanucleus.plugin.PluginManager.registerExtensionPoints(PluginManager.java:82)
at org.datanucleus.OMFContext.(OMFContext.java:164)
at org.datanucleus.enhancer.DataNucleusEnhancer.(DataNucleusEnhancer.java:171)
at org.datanucleus.enhancer.DataNucleusEnhancer.(DataNucleusEnhancer.java:149)
at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1157)

وأنا لا أفهم لماذا datanucleus المطلوبة مخضرم لتحميل datanucleus النواة 1.1.3.jar لأن هذا لا يتم الرجوع إليها في pom.xml

وأنا أيضا لا أفهم لماذا يتم تسجيله datanucleus النواة 1.1.3.jar ...

وأي أفكار؟ شكرا مقدما ...

هل كانت مفيدة؟

المحلول

والبرنامج المساعد DN M2 تسحب في أحدث إصدارات الجرار DN المتاحة التي يحتاجها للقيام بعملها (لا توجد وسيلة معقولة أخرى للقيام بذلك البعض من استخدام أحدث). كنت ترغب في تقييد "الأساسية" إلى إصدار مختلف، إما عن طريق تحديد تبعية المساعد للالأساسية أو عن طريق تحديد أنه في التطبيق الخاص بك ل

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>1.1.0</version>
    <scope>runtime</scope> 
</dependency>

نصائح أخرى

ومما يؤسف له أن الجواب هو "الخفية" في تعليقات:

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>1.1.0</version>
    <scope>runtime</scope>
</dependency>

والتي عملت بالنسبة لي!

وأنا واجهت نفس المشكلة أثناء اختبار على ركبه GAE مخضرم المساعد.

وأنا ثابت عن طريق إضافة الاستثناءات في بلدي GAE وقت متعدية تبعيات

<!-- Google App Engine meta-package -->
        <dependency>
            <groupId>net.kindleit</groupId>
            <artifactId>gae-runtime</artifactId>
            <version>${gae.version}</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>com.google.appengine.orm</groupId>
                    <artifactId>datanucleus-core</artifactId>
                </exclusion>

            </exclusions>
        </dependency>

وثم إضافة الأساسية نواة ك تبعية وقت التشغيل

<dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>${datanucleus-core.version}</version>
            <scope>runtime</scope>
            <exclusions>
                <exclusion>
                    <groupId>javax.transaction</groupId>
                    <artifactId>transaction-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

وكما حفظ القسم GAE المساعد بسيط:

<plugin>
                <groupId>org.datanucleus</groupId>
                <artifactId>maven-datanucleus-plugin</artifactId>
                <version>${maven-datanucleus-plugin.version}</version>
                <configuration>
                    <!--
                        Make sure this path contains your persistent classes!
                    -->
                    <mappingIncludes>**/model/*.class</mappingIncludes>
                    <verbose>true</verbose>
                    <enhancerName>ASM</enhancerName>
                    <api>JDO</api>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>enhance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

وبعد قراءة " كيفية تجاوز التبعية البرنامج المساعد في مخضرم "، وجدت طريقة أخرى لإصلاح هذه. وإنني هنا POM:

<plugin>
  <groupId>org.datanucleus</groupId>
  <artifactId>maven-datanucleus-plugin</artifactId>
  <version>3.1.0-m3</version>
  <configuration>
    <verbose>true</verbose>
  </configuration>

  <executions>
    <execution>
      <phase>process-classes</phase>
      <goals>
        <goal>enhance</goal>
      </goals>
    </execution>
  </executions>

  <dependencies>
    <dependency>
      <groupId>org.datanucleus</groupId>
      <artifactId>datanucleus-core</artifactId>
      <version>3.0.4</version>
    </dependency>
  </dependencies>
</plugin>

وإزالة الإصدار القديم من datanucleus من هاتفك مستودع مخضرم المحلي أيضا حل المشكلة.

لقد توقفت مخضرم-datanucleus البرنامج المساعد سحب في أحدث إصدارات المتوفرة datanucleus الأساسية منذ الإصدار 3.1.1.

والتحقق من الاختلافات بين الملفات POM للمخضرم-datanucleus البرنامج المساعد 3.1.1 (<لأ href = "http://repo1.maven.org/maven2/org/datanucleus/maven-datanucleus-plugin/3.1.1 /maven-datanucleus-plugin-3.1.1.pom "يختلط =" نوفولو "> http://repo1.maven.org/maven2/org/datanucleus/maven-datanucleus-plugin/3.1.1/maven-datanucleus-plugin -3.1.1.pom ) و3.1.0 الافراج عن (<لأ href = "http://mvnrepository.com/artifact/org.datanucleus/maven-datanucleus-plugin/3.1.0-release" يختلط = "نوفولو"> http://mvnrepository.com/artifact/org.datanucleus/maven-datanucleus-plugin/3.1.0-release ).

لمخضرم-datanucleus البرنامج المساعد 3.1.1 مجموعة النسخة التبعية datanucleus الأساسية هي (3.0.99، 3.1.99)، ومخضرم-datanucleus البرنامج المساعد 3.1.0 الإفراج هو (3.0.99، ). لا عجب للإصدارات القديمة من مخضرم-datanucleus البرنامج المساعد، فإنه يسحب تلقائيا في أحدث إصدارات datanucleus النواة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top