还有,我在执行hbm2java E:\HibSample\HibSample\hibernate\*.xml --output=E:\HibSample\后,在E:\HibSample\HibSample\hibernate下是可以生成一个Person.java的,但里面一个字也没有。

解决方案 »

  1.   

    首先你要配置好hbm2java.bat中的参数,然后使用:hbm2java E:\HibSample\HibSample\hibernate\*.xml --output=E:\HibSample\hibernate\在DOS下执行,就可以看到你要的POJO了;
    主要是hbm2java.bat中的参数要配置正确,否则就不会执行的;
      

  2.   

    TO:niyboy(JAVA爱好者) 我的hbm2java.bat里是这样写的:@echo offrem -------------------------------------------------------------------
    rem Execute hbm2java tool
    rem -------------------------------------------------------------------call setenv.batjava -cp %CP% net.sf.hibernate.tool.hbm2java.CodeGenerator %*为什么会报空指针异常呢?
      

  3.   

    rem 注意这里面的路径和真实路径可能不同!
    call setenv.bat
    另外,在ant中使用hbm2javaTask来生成java源代码比较方便。
      

  4.   

    TO:cm4ever(小P)如果是这样,我应该在什么地方写build.xml文件?是在D:\Hibernate-Extensions\tools下修改build.xml,还是在E:\HibSample\hibernate或E:\HibSample下写新build.xml?具体怎么写Task?请指教。
      

  5.   

    我在D:\Hibernate-Extensions\tools下运行了ant后,重新执行hbm2java E:\HibSample\HibSample\hibernate\*.xml --output=E:\HibSample\,又出现了新的问题:
    Exception in thread "main" java.lang.NoClassDefFoundError: E:\HibSample\HibSample\hibernate\Person/hbm/xml
    请大家帮我分析一下,谢谢。
      

  6.   

    1.build.xml在你的项目目录下(此处假设目录名为MyProject),很多开源项目也这样做。项目结构如下:
    MyProject<dir>
    |--build.xml
    |--codegen.xml
    |--src<dir> -- 源代码(*.java)目录
    |--lib<dir> -- 库目录,即jar文件的存放目录
    |--classes<dir>  -- 目的(*.class)目录*.hbm.xml文件可以在项目目录下建立一个hbm文件夹放置。这里只需要这些文件在项目目录文件夹下即可,没什么特殊限制。2.将hibernate-tools.jar复制到MyProject/lib目录。3.build.xml
    <project name="pjt" basedir="./" default="all">  <!--path-->
      <path id="p">
        <pathelement location="${classpath}"/>
        <fileset dir="lib/">
          <include name="**/*.jar"/>
        </fileset>
      </path>
       <!--hbm 2 java-->
      <target name="g" >
        <taskdef name="g" classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask" classpathref="p"/>    <g config="codegen.xml" output="src">
          <fileset dir="src">
            <include name="**/*.hbm.xml"/>
          </fileset>
        </g>
      </target>  <target name="all" depends="g" />
    </project>4.codegen.xml
    <?xml version="1.0" encoding="gbk"?><codegen>
      <generate renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer"/>
    </codegen>
      

  7.   

    cm4ever(小P)非常的感谢你!但是我按你说的做了,显示错误如下:E:\HibSample>ant
    Buildfile: build.xmlg:
            [g] Processing 1 files.
            [g] Building hibernate objectsBUILD FAILED
    E:\HibSample\build.xml:33: Caused by:
    Caused by:
    java.lang.NoClassDefFoundError: net/sf/hibernate/MappingException
            at net.sf.hibernate.tool.hbm2java.Hbm2JavaTask.processFile(Hbm2JavaTask.java:145)
            at net.sf.hibernate.tool.hbm2java.Hbm2JavaTask.execute(Hbm2JavaTask.java:95)
            at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:306)
            at org.apache.tools.ant.Task.perform(Task.java:401)
            at org.apache.tools.ant.Target.execute(Target.java:338)
            at org.apache.tools.ant.Target.performTasks(Target.java:365)
            at org.apache.tools.ant.Project.executeTarget(Project.java:1237)
            at org.apache.tools.ant.Project.executeTargets(Project.java:1094)
            at org.apache.tools.ant.Main.runBuild(Main.java:669)
            at org.apache.tools.ant.Main.startAnt(Main.java:220)
            at org.apache.tools.ant.launch.Launcher.run(Launcher.java:215)
            at org.apache.tools.ant.launch.Launcher.main(Launcher.java:90)        at net.sf.hibernate.tool.hbm2java.Hbm2JavaTask.processFile(Hbm2JavaTask.java:149)
            at net.sf.hibernate.tool.hbm2java.Hbm2JavaTask.execute(Hbm2JavaTask.java:95)
            at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:306)
            at org.apache.tools.ant.Task.perform(Task.java:401)
            at org.apache.tools.ant.Target.execute(Target.java:338)
            at org.apache.tools.ant.Target.performTasks(Target.java:365)
            at org.apache.tools.ant.Project.executeTarget(Project.java:1237)
            at org.apache.tools.ant.Project.executeTargets(Project.java:1094)
            at org.apache.tools.ant.Main.runBuild(Main.java:669)
            at org.apache.tools.ant.Main.startAnt(Main.java:220)
            at org.apache.tools.ant.launch.Launcher.run(Launcher.java:215)
            at org.apache.tools.ant.launch.Launcher.main(Launcher.java:90)
    Total time: 1 second请帮我分析一下好吗?谢谢!我的Person.hbm.xml如下:
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
        
    <hibernate-mapping>
    <!-- 
        Created by the Middlegen Hibernate plugin 2.1    http://boss.bekk.no/boss/middlegen/
        http://www.hibernate.org/
    --><class 
        name="HibSample.hibernate.Person" 
        table="person"
    >
        <meta attribute="class-description" inherit="false">
           @hibernate.class
            table="person"
        </meta>    <id
            name="id"
            type="java.lang.String"
            column="id"
        >
            <meta attribute="field-description">
               @hibernate.id
                generator-class="assigned"
                type="java.lang.String"
                column="id"
            </meta>
            <generator class="assigned" />
        </id>    <property
            name="name"
            type="java.lang.String"
            column="name"
            length="255"
        >
            <meta attribute="field-description">
               @hibernate.property
                column="name"
                length="255"
            </meta>    
        </property>
        <property
            name="address"
            type="java.lang.String"
            column="address"
            length="255"
        >
            <meta attribute="field-description">
               @hibernate.property
                column="address"
                length="255"
            </meta>    
        </property>    <!-- Associations -->
      </class>
    </hibernate-mapping>
      

  8.   

    java.lang.NoClassDefFoundError: net/sf/hibernate/MappingException
            at net.sf.hibernate.tool.hbm2java.Hbm2JavaTask.processFile估计你的包不全,你把所有需要的jar文件都放到lib目录,包括hibernate和hibernate extension tools的包。不怕多,就怕没有。