2012-09-27 3 views
0

개미를 사용하여 GAE 웹 애플리케이션을 빌드합니다.JDO3.0 향상 GAE 1.7.2

org.datanucleus.exceptions.NucleusException : 플러그인 (번들) "org.datanucleus은"이미 등록

<target name="datanucleusenhance" depends="compile" 
    description="Performs enhancement on compiled data classes."> 
    <enhance_war war="war"> 
    </enhance_war> 
</target> 

이것은 내가 가진 오류는 다음과 같습니다 이것은 datanucleus 대상이다. 클래스 경로에 동일한 플러그인의 여러 JAR 버전이 없는지 확인하십시오. URL "파일 : /home/xxxx/.eclipse/org.eclipse.platform_4.2.0_1473617060/plugins/com.google.appengine.eclipse.sdkbundle_1.7.2/appengine-java-sdk-1.7.2/lib/opt /tools/datanucleus/v1/datanucleus-core-1.1.5.jar "가 이미 등록되어 있으며 URL에 동일한 플러그인을 등록하려고합니다."file : /war/WEB-INF/lib/datanucleus-core-3.1 .0-m5.jar. " 나는 "datanucleus 코어-1.1.5.jar"를 삭제하려고했습니다

<target name="datanucleusenhance" depends="compile" description="Performs enhancement on compiled data classes."> 
    <enhance_war war="war"> 
     <args> 
      <arg value="-enhancerVersion" /> 
      <arg value="v3.1.0" /> 
     </args> 
    </enhance_war> 
</target> 

:

나는이 개미 대상을 시도했습니다. 그러면 오류는 다음과 같습니다.

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: java.lang.NoClassDefFoundError: org/datanucleus/OMFContext 
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:172) 
    at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:150) 
    at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1157) 
    ... 7 more 
Caused by: java.lang.ClassNotFoundException: org.datanucleus.OMFContext 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at com.google.appengine.tools.enhancer.EnhancerLoader.loadClass(EnhancerLoader.java:107) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 10 more 

어떻게 GAE1.7.2에서 JDO3.0을 사용할 수 있습니까?

답변

0

어떤 종류의 종속 항아리를 사용하는지 혼동하는 것 같습니다. GAE 1.7.2는 GAE JDO/JPA plugin v2.x를 사용하는데 이것은 DataNucleus 3.x가 필요합니다. DataNucleus 1.x 항아리가 분명히 있습니다 (다양한).

+0

/lib/opt/user/datanucleus/v2는 답을 얻었다. 올바른 개미 대상 같아야 \t <타겟 명 = "datanucleusenhance가"=이 \t \t 설명 = "컴파일 된 데이터 클래스에 대한 개선을 수행"컴파일 "의존한다."> \t \t \t \t \t \t \t \t \t <인수 값 ="- enhancerVersion "/> \t \t \t \t <인수 값 ="V2 "/> \t \t \t \t \t \t 버전은 DN 버전입니다. :) –

+0

아니요, 버전은 GAE JDO/JPA 플러그인 버전입니다. DataNucleus는 완전히 별도의 프로젝트이고 소프트웨어입니다 (Googles 플러그인이 사용합니다). – DataNucleus

1

답을 얻었다. 올바른 개미 대상이 될해야합니다.!

<target name="datanucleusenhance" depends="compile" description="Performs enhancement on compiled data classes."> 
    <enhance_war war="war"> 
     <args> 
      <arg value="-enhancerVersion" /> 
      <arg value="v2" /> 
     </args> 
    </enhance_war> 
</target> 

버전이 GAE JDO/JPA 플러그인 버전입니다 (감사 DataNucleus :

+0

개미와 함께하면 이것이 올바른 대답입니다. – Vishwanath

5

인 IntelliJ에 대한 GAE 플러그인을 사용하여, 나는이 기본 구성 ORM을 제거했다 특히 상위 버전 라이브러리를 추가하십시오.

GAE SDK는 다음과 같은 구성되어

/lib/user/orm (default persistence libraries I removed) 

/lib/opt/user/datanucleus/v2 

을 내 프로젝트에 대한 컨텍스트 메뉴에서, 인 IntelliJ이 구성에 액세스하려면 :

{context menu} -> Open Module Settings -> Libraries -> AppEngine ORM 
  • [-]을 사용합니다. 톤이 디렉토리 내에서 항아리를 제거 : /lib/user/orm
  • 이 디렉토리 내에서 항아리를 추가 [+] 버튼을 사용하여 :