10

Netbeans 7.1.1 と Glassfish 3.1.2 サーバーを使用しています。JPA プロバイダーとして、Netbeans に同梱されている eclipse-link 2.3.0 を使用することにしました。私は遅延フェッチを使用したいと考えており、私のプロジェクトは約 45 の JPA エンティティ クラスで構成されており、それらの間に多くの関係があるため、static weavingを使用することにしました。さらに、@Entity クラスは別の Class Lib プロジェクトにありますが、persistence.xml は EJB プロジェクトにあります。

私はすでにここの指示に従いました: http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

Ant-task を build-impl.xml ファイル (以下) に入れました。Netbeans を使用する場合は正しいですか? build-impl.xml のスニペットは次のとおりです。

<target name="-post-jar" description="New task definition for EclipseLink static weaving">
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/>
</target>
<target name="weaving" description="perform weaving" depends="-post-jar">
    <weave  source="${dist.jar}\MyProject.jar"
            target="${dist.jar}\MyProject_Weaved.jar"
            persistenceinfo="${dist.jar}..\..\MyProjectEE\MyProject-ejb\build\classes\META-INF\persistence.xml"
            loglevel="FINER">
        <classpath>
            <pathelement path="${dist.jar}\lib\eclipselink-2.3.0.jar"/>
            <pathelement path="${dist.jar}\lib\javaee-api-6.0.jar"/>
            <pathelement path="${dist.jar}\lib\jasypt-1.9.0.jar"/>
            <pathelement path="${dist.jar}\lib\javax.persistence-2.0.jar"/>
            <pathelement path="${dist.jar}\lib\org.eclipse.persistence.jpa.jpql_1.0.0.jar"/>
            <pathelement path="${dist.jar}\lib\joda-time-2.1.jar"/>
            <pathelement path="${dist.jar}\lib\jms.jar"/>
        </classpath>
    </weave>
</target>

path 要素パス内のすべての jar ファイルも、ライブラリとして Netbeans IDE に含まれています。「クリーン & ビルド」を押すと、次のエラーが表示されるようになりました。

D:\workspace\MyProject\nbproject\build-impl.xml:703: taskdef class org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask cannot be found
using the classloader AntClassLoader[]

ここで何が間違っていますか?

4

3 に答える 3

5

eclipselink.jarとjavax.persistence.jarをAntクラスパスに追加する必要があります。

Netbeansで、[ツール]/[オプション]/[その他]/[Ant]に移動し、そこでクラスパスを編集します。

于 2012-05-11T13:11:15.180 に答える
4

また、TomEE 1.7.0 で Eclipselink 2.4.2 を使用して Java ee プロジェクトを開発するために Netbeans 8.0.1 を使用しており、build.xmlに次の内容を入力するだけです (Netbeans は何かが発生したときに上書きできるため、build-impl.xml を変更することはありません)。構成、構築で変更されます):

<target name="--weaving-def" description="New task definition for EclipseLink static weaving" depends="dist">
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"
             classpath="${j2ee.platform.classpath}">
    </taskdef>
</target>
<target name="weaving" description="perform weaving" depends="--weaving-def">
    <weave source="${build.classes.dir}"
           target="${build.classes.dir}"
           loglevel="INFO">
        <classpath path="${j2ee.platform.classpath}:${javac.classpath}"/>  
    </weave>
</target>

すべての Netbeans Java EE Ant プロジェクトで一般的に使用される変数のみを使用したことがわかります。プロジェクトで既に定義されている変数だけを直接定義していません。

私の実装では、展開されたディレクトリ構造を使用しており、persistence.xml は

${build.classes.dir}/META-INF/persistence.xml

最も重要なことは、クラスパスを正しく定義することでした

今私が走れば

ant weaving 

静的織りが行われます。ビルドにはさらに約 15 秒かかるため、開発環境ではなく、テスト サーバーと運用サーバーでのみこの方法でビルドしています。

単純に実行する (または Netbeans ビルドメニューを使用する) 場合

ant dist

建物は織りなしで通常の結果になります。

もちろん、persistence.xml には次のようなウィービング定義があります。

<persistence-unit name="MY-PU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>mydata</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>
        <property name="eclipselink.logging.level" value="INFO"/>
        <property name="eclipselink.weaving" value="static"/>
    </properties>
</persistence-unit>
于 2014-11-14T06:31:33.203 に答える
2

また、ウィービングを実行するために、 org.eclipse.persistence.jpa.jpql_1.0.1.jarorg.eclipse.persistence.jpa.modelgen.processor-2.3.2.jarを含める必要がありました。お役に立てれば。

于 2013-05-22T07:26:38.133 に答える