0

メイン サーブレットとは別のプロジェクトにアプリケーション エンティティがあり、それらは DataNucleus 拡張されていません。

ルールを破っているだけなのかどうかはわかりませんが、プロジェクトで ORM 設定を設定しても、.class ファイルが強化されません。ワークスペースを構築する方法は、プロジェクトをコンパイルしてから、ant スクリプトを実行して jar ファイルを構築し、それらをサーブレットの lib ディレクトリにコピーすることです。

必要に応じて、ant スクリプトにいくつかの Java タスクを追加して、.class ファイルを拡張できると思います。その場合は、タスクの例が役立ちます。

プロジェクトをそのまま維持したいのですが、それを維持するために何をする必要があるか教えてください。

これは私のエンティティを含むプロジェクトの私の build.xml です:

<project default="default">

<property name="appengine.sdk.dir" location="C:\superlongpathtomyeclipseplugins\plugins\com.google.appengine.eclipse.sdkbundle_1.6.5\appengine-java-sdk-1.6.5"/>
<import file="${appengine.sdk.dir}/config/user/ant-macros.xml"/>

<target name="default" depends="dist"/>

<target name="dist">
    <enhance>
        <classpath>
            <pathelement path="${appengine.sdk.home}/lib/*"/>
            <pathelement path="bin"/>
        </classpath>
        <fileset dir="bin" includes="**/*.class" />
    </enhance>
    <jar basedir="bin" destfile="dist\sessionexample.model.jar"/>
</target>
</project>

しかし、今ここに私が得ているエラーがあります:

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 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース) で java.lang.reflect.Method.invoke (不明なソース) で com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74) ) ... 2 原因: java.lang.NoClassDefFoundError: com/google/appengine/api/datastore/Key at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.java.lang.Class.getDeclaredMethods (不明なソース) の Class.privateGetDeclaredMethods (不明なソース) org.datanucleus.metadata.annotations.AbstractAnnotationReader.getJavaBeanAccessorAnnotationsForClass (AbstractAnnotationReader.java:238) (AbstractAnnotationReader.java:128) org.datanucleus.metadata.annotations.AnnotationManagerImpl.getMetaDataForClass(AnnotationManagerImpl.java:136) org.datanucleus.metadata.MetaDataManager.loadAnnotationsForClass(MetaDataManager.java:2278) org.datanucleus.metadata. org.datanucleus.enhancer.DataNucleusEnhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:743) の MetaDataManager.loadClasses(MetaDataManager.java:385)。org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1252) でのエンハンス(DataNucleusEnhancer.java:545) ... 7 その他の原因: java.lang.ClassNotFoundException: com.google.appengine.api.datastore.Key java.net.URLClassLoader$1.run (未知のソース) で java.security.AccessController.doPrivileged (ネイティブ メソッド) で java.net.URLClassLoader.findClass (未知のソース) で java.lang.ClassLoader.loadClass (未知のソース) でcom.google.appengine.tools.enhancer.EnhancerLoader.loadClass(EnhancerLoader.java:107) at java.lang.ClassLoader.loadClass(Unknown Source) ... 18 詳細java.net.URLClassLoader$1.run のキー (不明なソース) の java.security.AccessController.doPrivileged (ネイティブ メソッド) の java.net.URLClassLoader.findClass (不明なソース) の java.lang.ClassLoader.loadClass (不明なソース) com.google.appengine.tools.enhancer.EnhancerLoader.loadClass(EnhancerLoader.java:107) で java.lang.ClassLoader.loadClass(Unknown Source) で ... 18 詳細java.net.URLClassLoader$1.run のキー (不明なソース) の java.security.AccessController.doPrivileged (ネイティブ メソッド) の java.net.URLClassLoader.findClass (不明なソース) の java.lang.ClassLoader.loadClass (不明なソース) com.google.appengine.tools.enhancer.EnhancerLoader.loadClass(EnhancerLoader.java:107) で java.lang.ClassLoader.loadClass(Unknown Source) で ... 18 詳細

機能するまで何かを追加し続ける必要があり<classpath>ますか?

4

2 に答える 2

1

DataNucleus プロジェクトは、拡張機能を実行する多くの方法を定義しています。あなたの環境と構築システムに最も適したものを選択するのはあなた次第です。そのページで定義されていない他の方法はサポートされていません (私たちによって)

于 2012-06-25T08:14:37.280 に答える
0

最後に、実行する Ant タスクを取得しました。

<project default="default">

<property name="appengine.sdk.dir" location="c:\pathtoeclipse\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.6.5\appengine-java-sdk-1.6.5"/>
<import file="${appengine.sdk.dir}/config/user/ant-macros.xml"/>

<target name="default" depends="dist"/>

<target name="dist">
    <enhance>
        <classpath>
            <pathelement path="${appengine.sdk.home}/lib/*"/>
            <pathelement path="${appengine.sdk.home}/lib/user/*"/>
            <pathelement path="${appengine.sdk.home}/lib/user/orm/*"/>
            <pathelement path="bin"/>
        </classpath>
        <fileset dir="bin" includes="**/*.class" />
    </enhance>
    <jar basedir="bin" destfile="dist\sessionexample.model.jar"/>
</target>
</project>
于 2012-06-25T20:41:37.950 に答える