1

私のプロジェクトのセットアップは、Hibernate 3.2.5、MySQL、Spring MVC、NetBeans Apache 7.xx です。


ビルドと実行中にエラーは発生しません。

Ant タスクを介してアノテーション Bean から SQL DDL スクリプトを生成しようとしていますが、次のエラーが発生します。

Reference C:/cmgr/build/web/WEB-INF/lib/hibernate-tools.jar not found.

ただし、パスを確認すると、hibernate-tools.jar が存在します。


エラーの原因となっている Ant taskdef セクション:

<taskdef
    name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask"
    classpathref="C:/cmgr/build/web/WEB-INF/lib/hibernate-tools.jar">

hibernate_ddl.xml (Ant ファイル全体)

    <?xml version="1.0" encoding="UTF-8"?>
<project name="yourmarketnet" default="all" basedir=".">
    <property name="build.dir" value="C:/cmgr/build" />
    <property name="src.dir" value="C:/cmgr/src/java" />
    <target name ="ddl_generation">
<!-- paths to required jars  -->
        <path id="toolslib">
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-annotations.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-commons-annotations.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/dom4j-1.6.1.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/org-apache-commons-logging.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-entitymanager.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-tools.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-entitymanager.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/javaassist.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-tools.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/hibernate3.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/freemarker-2.3.4.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/ejb3-persistence.jar" />
        <!-- JDBC DRIVER PATH mysql-connector-java-5.1.20-bin.jar--> 
            <path location="${build.dir}/web/WEB-INF/lib/mysql-connector-java-5.1.20-bin.jar"/>
        </path>
         <!-- taskdef -->
        <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="C:/cmgr/build/web/WEB-INF/lib/hibernate-tools.jar">
             <!--  path to annotation beans --> 
            <classpath>
                <pathelement path="${build.dir}/web/WEB-INF/classes/com/cmgr/beans" />
            </classpath> 
        </taskdef>
<!-- output DDL script destination -->
        <hibernatetool destdir="${src.dir}">
            <!-- path to hibernate.cfg.xml -->
            <AnnotationConfiguration configurationfile="${src.dir}/resources/hibernate.cfg.xml"/>
<!-- list exporters here -->
            <hbm2ddl
                export="false"
                update="false"
                drop="true"
                create="true"
                outputfilename="${src.dir}/resources/myApps.ddl"
                delimiter=";"
                format="false"
                haltonerror="true"/>
        </hibernatetool>
    </target>
</project>

私のプロジェクト設定を考慮して、誰かが実用的な解決策を提案するのに十分親切でしょうか?

4

1 に答える 1

0

ではなく、Anttaskdefタスクパラメータが必要です。パラメータは、ファイルシステムパスではなく、他の場所で定義されたAnt参照IDを渡すためのものです。classpathclasspathrefref

あれは:

<taskdef
    name="hibernatetool"
    classname="org.hibernate.tool.ant.HibernateToolTask"
    classpath="C:/cmgr/build/web/WEB-INF/lib/hibernate-tools.jar">
于 2012-08-31T05:48:52.533 に答える