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任务classpath参数而不是classpathref. 该ref参数用于传递在别处定义的 Ant 引用 ID,而不是文件系统路径。

那是:

<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 回答