自己编写了个java测试类,其中引用了hibernate框架
用ANT写了编译和运行的任务<?xml version="1.0"?>
<project basedir="." default="test" name="testproject">
<property name="lib.dir" value="lib" />
<path id="classpath">
    <fileset dir="${lib.dir}">
    <include name="**/*.jar" />
</fileset>
</path>
<target name="bot">
    <javac destdir="${basedir}/Model">
        <src path="${basedir}" />
<classpath refid="classpath" />
</javac>
</target>
<target name="exc">
    <java classname="NewsManager">
    <classpath>
<pathelement path="${basedir}/Model" />
</classpath>
</java>
</target>
</project>运行exc任务的时候是否应增加下面的引用?先谢过了
<classpath refid="classpath" />

解决方案 »

  1.   

    需要。
    编译的时候依赖的Jar包,并不会通过编译进入字节码,运行时依然需要带上。<java classpathref="classpath"
    ...
      

  2.   

    但是我编译成功了,加上引用和不加 运行怎么都是报错啊,我初学hibernate,帮帮忙
    以下是报错结果,看了下好像需要资源文件Model/News.hbm.xml 不是很明白
    exc:
         [java] org.hibernate.MappingNotFoundException: resource: Model/News.hbm.xml not found
         [java]  at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
         [java]  at org.apache.tools.ant.taskdefs.Java.run(Java.java:771)
         [java]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:221)
         [java]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135)
         [java]  at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
         [java]  at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
         [java]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         [java]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         [java]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         [java]  at java.lang.reflect.Method.invoke(Method.java:597)
         [java]  at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
         [java]  at org.apache.tools.ant.Task.perform(Task.java:348)
         [java]  at org.apache.tools.ant.Target.execute(Target.java:390)
         [java]  at org.apache.tools.ant.Target.performTasks(Target.java:411)
         [java]  at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)
         [java]  at org.apache.tools.ant.Project.executeTarget(Project.java:1366)
         [java]  at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
         [java]  at org.apache.tools.ant.Project.executeTargets(Project.java:1249)
         [java]  at org.apache.tools.ant.Main.runBuild(Main.java:801)
         [java]  at org.apache.tools.ant.Main.startAnt(Main.java:218)
         [java]  at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
         [java]  at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
         [java] Caused by: org.hibernate.MappingNotFoundException: resource: Model/News.hbm.xml not found
         [java]  at org.hibernate.cfg.Configuration.addResource(Configuration.java:743)
         [java]  at org.hibernate.cfg.Configuration.addClass(Configuration.java:788)
         [java]  at NewsManager.main(Unknown Source)
         [java]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         [java]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         [java]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         [java]  at java.lang.reflect.Method.invoke(Method.java:597)
         [java]  at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
         [java]  at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
         [java]  ... 21 more
         [java] Java Result: -1BUILD SUCCESSFUL
    Total time: 1 second
      

  3.   

    我是用代码配置的hibernate,请帮看下//model News.java
    package Model;
    public class News 
    {
    private Integer id;
    private String title;
    private String content; public Integer getId() {
    return id;
    } public void setId(Integer id) {
    this.id = id;
    } public String getTitle() {
    return title;
    } public void setTitle(String title) {
    this.title = title;
    } public String getContent() {
    return content;
    } public void setContent(String content) {
    this.content = content;
    }
    }//NewsManager.java
    import org.hibernate.cfg.Configuration;
    import org.hibernate.SessionFactory;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import Model.News;
    public class NewsManager 
    {
    public static void main(String[] args) throws Exception
    {
    Configuration conf = new Configuration().addClass(Model.News.class)
    .setProperty("hibernate.connection.driver_class","com.mysql.jdbc.Driver")
    .setProperty("hibernate.connection.url","jdbc:mysql//localhost/hibernate")
    .setProperty("hibernate.connection.username","root")
    .setProperty("hibernate.connection.password","admin")
    .setProperty("hibernate.c3p0.max_size","20")
        .setProperty("hibernate.c3p0.min_size","1")
    .setProperty("hibernate.c3p0.timeout","5000")
    .setProperty("hibernate.c3p0.max_statements","100")
    .setProperty("hibernate.c3p0.idle_test_period","3000")
    .setProperty("hibernate.c3p0.acquire_increment","2")
    .setProperty("hibernate.c3p0.validate","true")
    .setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")
    .setProperty("hibernate.hbm2ddl.auto","create");
    SessionFactory sf = conf.buildSessionFactory();
    Session sess = sf.openSession();
    Transaction tx = sess.beginTransaction();
    News n = new News();
    n.setTitle("测试标题");
    n.setContent("内容");
    sess.save(n);
    tx.commit();
    sess.close();
    }
    }
      

  4.   

    xml文档需要在构建的时候送入classes目录中。
    以下任务需要和javac一起做:
    <copy todir="${basedir}/Model">
    <fileset dir="${basedir}">
    <include name="**/*.properties" />
    <include name="**/*.xml" />
    </fileset>
    </copy>
    对了,顺便说一句,把classes目录指定为${basedir}/Model不好,最好换个${basedir}以外的目录。
      

  5.   

    to:magong
    首先感谢你耐心的替我解答!
    我这个实例并没有用*.properties 或 *.hbm.xml之类的配置文件进行配置hibernate,所以就不需要进行copy。实例就两个文件:News.java 和 NewsManager.java,其中NewsManager.java文件用代码进行hibernate的配置,虽然这种做法书上有写是不推荐的,但我就想知道是错在哪里
      

  6.   

    你的News.java中没有用注解,所以一定要用News.hbm.xml文件来定义映射规则。
      

  7.   

    我的问题和楼主的一样,但是我已经有News.hbm.xml文件来定义映射规则了还是一样的错误