0

ANT を使用して Hibernate/JPA アノテーション クラスから SQL DDL スクリプトを生成したいと考えています。

以下は、Hibernate Dev Docs URL に基づいて作成した ANT スクリプトです: http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/

   <project name="yourmarketnet" default="all" basedir=".">
<target name="ddl_generation">
<!-- paths to required jars  -->
<path location="web/WEB-INF/lib/hibernate-annotations.jar" />
<path location="web/WEB-INF/lib/ejb3-persistence.jar" />
<path location="web/WEB-INF/lib/hibernate-entitymanager.jar" />
<path location="web/WEB-INF/lib/javaassist.jar" />
<path location="web/WEB-INF/lib/hibernate-tools.jar"/>
<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask.jar">
     <classpath path="${build.dir}/web/WEB-INF/lib/hibernate-tools.jar"/> 
    </taskdef>
<!-- output destination -->
<hibernatetool destdir="${build.dir}">
    <!-- were the annotation beans files are located-->
<classpath>
<path location="${build.dir}/web/WEB-INF/classes/com/yourmarketnet/beans" />
</classpath>
<!-- list exporters here -->
<hbm2ddl
export="false"
update="false"
drop="true"
create="true"
outputfilename="myApps.ddl"
delimiter=";"
format="false"
haltonerror="true"/>
</hibernatetool>
</target>
</project>

クラスローダー AntClassLoader[] を使用してエラー taskdef class org.hibernate.tool.ant.HibernateToolTask​​ が見つかりません

また、hibernate-tools.jar が実際にパスにあるかどうかを確認しましたが、それは (C:\Users\naim\Documents\NetBeansProjects\yourmarketnet\build\web\WEB-INF\lib\hibernate-tools.jar) でした。

この問題を修正/デバッグする方法を順を追って教えてください。ありがとうございます。

4

1 に答える 1

1

エラーメッセージは、アリがツールを見つけられないことを明確に示しています。宣言すると

<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" >
   <classpath path="${build.dir}/web/WEB-INF/lib"/>
</taskdef>

ツールクラスはディレクトリではなくjarにあるため、すでに間違っています。第二に、あなたの意図は出力場所として使用することであるように思われる${build.dir}ので、なぜツールクラスが含まれているのでしょうか? とにかく、このディレクトリさえ定義していません。

あなたが本当にあなたのhibernate-tools.jarinweb/WEB-INF/libを持っているなら、おそらく次のようなものが欲しいでしょう

<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" >
   <classpath path="web/WEB-INF/lib/hibernate-tools.jar"/>
</taskdef>

これはプロジェクト ディレクトリからの相対パスであることに注意してください。

于 2012-06-02T00:48:06.797 に答える