我的環境變量如下
CATALINA_HOME=F:\Tomcat5CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar  (此處加上mysql-connector-java-3.0.16-ga-bin.jar的路徑依舊不行)JAVA_HOME=D:\jdk5path=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;F:\java_jars\apache-ant-1.6.1\apache-ant-1.6.1\bin

解决方案 »

  1.   

    下載包可在此地址下載http://www.redsaga.com/hibernate_book.html
    如下是 下載文檔中的Reader.txt 内容环境说明
    ---------
    程序包中的程序经过测试的运行环境为:
    1, Tomcat 5.0.25
    2, Hibernate 2.1.7
    3, Hibernate 3.0.2
    4, Eclipse 3.0.1 (作为IDE)
    5, ant 1.6(作为build工具)
    6, java sdk 1.4.2
    7, mysql 4.1 (作为后台数据库)
    8, 至少250M硬盘空间(hibernate 2,3和webwork就将占据138M)虽然在更高版本中应该可以不加修改的运行,但我们对此不加以保证。(v1.2将对Hibernate 3.0.4进行测试)安装说明
    ---------
    1, 确认jdk 1.4.2已经正确安装;
    2,将本程序包解压,假设目录为: x:\rs\hib-samples
    3, 从hibernate的sf下载区下载2.1.7与3.0.2版本:
     http://sourceforge.net/project/showfiles.php?group_id=40712
    4,将下载的hibernate包解压到x:\rs\hib-samples\hibernate-2.1与x:\rs\hib-samples\hibernate-3,目录结构应该为:
       x:
        + rs
          + hib-samples     <--- 本文件包解压的目录
            + forum-step1-db-first-middlegen
            + forum-step1-db-first-synchronizer
            + forum-step2
            + ...
            + hibernate-2.1 <---  Hibernate 2.1.7解压到这里
              + bin         <---  确认bin与doc目录就在解压后的hibernate-2.1目录中
              + doc
              + ...
            + hibernate-3.0 <---  Hibernate 3.0.2解压到这里
              + bin         <---  确认bin与doc目录就在解压后的hibernate-3目录中
              + doc
              + ...5,确认tomcat 5 安装正确。检查你的系统中,正确设置了CATALINA_HOME环境变量:
      若您是windows 2000/xp系统,请右键点击"我的电脑","高级","环境变量".
     确认其中的CATALINA_HOME环境变量正确指向您的tomcat 安装目录.
    例:
    CATALINA_HOME=D:\PROGRA~1\APACHE~2\TOMCAT~1.06, 确认mysql 4安装正确.
    我们建议两种不同的mysql安装搭配:
      a) 假若您使用windows平台,并且是初次使用mysql ,我们建议采用另一个免费安装包来安装,它就是easy php: http://prdownloads.sourceforge.net/quickeasyphp/easyphp1-8_setup.exe?download
    无需预先安装mysql,只需一次安装,它不仅包含了mysql 4.1.9,还包括了apache, php以及phpmyadmin ,而后者几乎是全球采用率最高的基于浏览器的mysql管理平台,非常简单易用。  b)  mysql 正式安装版 + 客户端
     mysql可以在此下载:http://dev.mysql.com/downloads/mysql/4.1.html
     客户端有多种,可以采用其自己的mysql administrator,也可以采用mysql front等商业产品。mysql front有三十天免费的无限制试用版本,是一个值得推荐的工具:http://www.mysqlfront.de/download.html 在安装完mysql之后,请使用客户端或者phpmyadmin建立一个名为forum的mysql数据库,其字符集必须为UTF-8(见下面关于中文的说明,在phpmyadmin中应该选择utf8_general_ci)。另外还需要建立名为forum的用户,密码也为forum,并且对forum具有完全访问权限。(假若您希望使用其它用户名如root,您需要修改hibernate的数据库配置中的连接参数——位于hibernate.cfg.xml中,以及创建数据库表时的连接参数——位于build.xml中。)7, 确认ant安装正确. ant可以在此下载:
     http://ant.apache.org
    或 http://www.redsaga.com/down/apache-ant-1.6.1.zip解压后,请将其bin目录置于系统path中.8, 注意,我们的成品工程是forum-step3。step1和step2都是中间过程。
    确认您可以编译整个step3工程,在命令行下输入,
    cd x:\rs\hib-samples (换成您的目录)
    cd forum-step3
    ant假若安装正确的话,会给出一个指令说明.
    执行:
    ant all
    它会自动进行数据库初始化、编译、启动tomcat容器.(此命令将会启动tomcat,因此之前tomcat必须处于停止状态)然后,打开您的浏览器,输入http://localhost:8080/forum 您应该看到我们的示例正常运行.
    9, 在您的Eclipse 3中,按照书中的步骤安装hibernate synchronizer.10,在您的eclipse中,建立两个User Library:
    菜单window -> preference -> Java -> Build Path -> User Librarys,分别建立名为Hibernate2,hibernate3,mysql-jdbc的用户库,分别包含对应的lib文件(如hibernate2包含hibernate-2.1目录下的hibernate2.jar及其lib目录下的所有jar文件);11, 在您的eclipse 中,导入各个目录下的.project文件,以建立工程.(工程名为step1,step2,step3,step4)。在工程的类路径配置中,使用上一步创建的用户库(step1-step3使用Hibernate2,step4使用hibernate3)。确保没有编译错误。好了,您现在可以开始阅读代码,作一些自己的改变,看看您能得到什么结果 :)中文处理说明
    ------------关于中文的处理,是在step3加入的,因此在step1以及step2中,请使用英文进行实验。具体进行的处理为全程采用UTF-8编码.
    1,mysql创建时,字符集必须选择UTF-8
    2,在mysql jdbc连接的url中,必须指定采用utf-8 encoding。
    jdbc:mysql://localhost/forum?useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
    3,在jsp页面中,指定页面采用UTF-8编码.
     <%@ page contentType="text/html;charset=utf-8"%>假若在您的项目中,必须使用GBK编码,则在以上的各个地方,都需要把UTF-8更换为GBK方可正常使用。
      

  2.   

    2007-12-12 11:50:13 StandardContext[/forum]Servlet /forum threw load() exception
    javax.servlet.ServletException: JDBC Driver class not found: 
    at com.redsaga.hibernatesample.step3.util.InitializeServlet.init(InitializeServlet.java:32)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1029)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
    at org.apache.catalina.core.StandardService.start(StandardService.java:480)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
    ----- Root Cause -----
    net.sf.hibernate.HibernateException: JDBC Driver class not found: 
    at net.sf.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:63)
    at net.sf.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:83)
    at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)
    at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1160)
    at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:794)
    at com.redsaga.hibernatesample.step3.base._BaseRootDAO.initialize(_BaseRootDAO.java:56)
    at com.redsaga.hibernatesample.step3.base._BaseRootDAO.initialize(_BaseRootDAO.java:40)
    at com.redsaga.hibernatesample.step3.util.InitializeServlet.init(InitializeServlet.java:28)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1029)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
    at org.apache.catalina.core.StandardService.start(StandardService.java:480)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
      

  3.   

    觉得还是的jdbc驱动包有问题,你的mysql版本和驱动包是不是配对的?
    把mysql-connector-java-3.0.16-ga-bin.jar加到classpath里面。写一个简单的访问数据库的程序。看看能不能成功。
      

  4.   

    非常感谢sunny!您是第一个回答的我自己写一个java文件用jdbc是可以连数据库的我刚才也开始怀疑是jar包的问题
    换了mysql-connector-java-3.1.7-bin.jar,
    ant all的时候报错F:\java_jars\samples-dist\forum-step3\db\build.xml:32: com.mysql.jdbc.MysqlDataT
    runcation: Data truncation: Data truncated for column 'name' at row 1build.xml文件如下
    <?xml version="1.0"?><project name="rsForum" basedir="." default="usage"> <property name="name" value="rsForum"/> <property name="rsForum.root" value="."/>
    <property name="src.dir" value="src"/>
        <property name="build.dir" value="web\WEB-INF\classes"/>
        <property name="db.dir" value="db"/>    <property name="hibernate2.root" value="../hibernate-2.1"/>
        <property name="hibernate3.root" value="../hibernate-3.0"/>
        <property name="webwork.root" value="../webwork-2.1.7"/>
        <property name="ext-lib.root" value="../lib"/>
        <property name="war.lib" value="web\WEB-INF\lib"/> <property name="testsrc.dir" value="test"/>
    <property name="testbuild.dir" value="${rsForum.root}/build/.testclasses"/>
    <property name="testreports.dir" value="${rsForum.root}/build/junit-reports"/>
    <property name="testhtml.dir" value="${testreports.dir}/html"/> <target name="set-db-properties" description="Setup db connection parameters">
    <property name="db.driver" value="com.mysql.jdbc.Driver"/>
    <property name="db.url" value="jdbc:mysql://localhost/forum?useUnicode=true&amp;characterEncoding=utf-8&amp;mysqlEncoding=utf8"/>
    <property name="db.user" value="forum"/>
    <property name="db.pw" value="forum"/>
    <property name="db.jdbcdriver" value="mysql-connector-java-3.1.7-bin.jar"/>
    </target> <property file="build.properties"/>
    <path id="master-classpath">
    <fileset dir="${hibernate2.root}">
    <include name="hibernate2.jar"/>
    </fileset>
    <fileset dir="${hibernate2.root}/lib">
    <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${webwork.root}">
    <include name="*.jar"/>
    </fileset>
    <fileset dir="${webwork.root}/lib">
    <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${rsForum.root}/../lib">
    <include name="**/*.jar"/>
    </fileset>
    </path> <path id="console-classpath">
    <pathelement location="${build.dir}"/>
    <fileset dir="${rsForum.root}/../tools/consoleLoader">
    <include name="loader.jar"/>
    </fileset>
    <fileset dir="${rsForum.root}/../tools/hibernateConsole">
    <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${hibernate2.root}">
    <include name="hibernate2.jar"/>
    </fileset>
    <fileset dir="${hibernate2.root}/lib">
    <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${rsForum.root}/../lib">
    <include name="**/*.jar"/>
    </fileset>
    </path>
    <target name="usage">
    <echo message=""/>
    <echo message="rsForum build file"/>
    <echo message="------------------------------------------------------"/>
    <echo message=""/>
    <echo message="Available targets are:"/>
    <echo message=""/>
    <echo message="-------  Operations ---------------------------------"/>
    <echo message="clean       --> Clean output dirs"/>
    <echo message="build       --> Compile main Java sources"/>
    <echo message="createTables --> Initialize the database"/>
    <echo message="dropTables  --> drop tables,clear any data"/>
    <echo message="sampleData  --> create sample data"/>
    <echo message="copyjar     --> copy hibernate and webwork jar into WEB-INF\lib"/>
    <echo message=""/>
    <echo message="-------   Run  -------------------------------------"/>
    <echo message="console     --> launch hibernate console"/>
    <echo message="tests       --> Run junit tests.Will clean database first"/>
    <echo message="report      --> View junit test result"/>
    <echo message="tomcat      --> Start Tomcat. Let's Go! (Please stop tomcat if it's active)"/>
    <echo message=""/>
    <echo message="-------  First Time --------------------------------"/>
    <echo message="all         --> clean,createTables,createTables,sampleData,copyjar,build,tomcat"/>
    </target>
    <target name="clean" description="Clean output dirs (build, testbuild, testreports, weblib, dist)">
    <delete dir="${build.dir}"/>
    <delete dir="${testbuild.dir}"/>
    <delete dir="${testreports.dir}"/>
    <delete dir="${war.lib}"/>
    <delete dir="tomcat-run/work/Catalina"/>
    <delete dir="bin"/>
    </target> <target name="copyjar" description="copy jar files into WEB-INF\lib">
    <mkdir dir="${build.dir}"/> <copy todir="${war.lib}">
    <fileset dir="${hibernate2.root}">
          <include name="*.jar"/>
    </fileset>
    <fileset dir="${hibernate2.root}/lib">
          <include name="*.jar"/>
    </fileset>
    <fileset dir="${webwork.root}">
          <include name="*.jar"/>
    </fileset>
    <fileset dir="${webwork.root}/lib/core">
          <include name="*.jar"/>
    </fileset>
    <fileset dir="${ext-lib.root}">
          <include name="**/*.jar"/>
    </fileset>
    </copy>
    </target> <target name="build" depends="copyjar" description="Compile main source tree java files into class files">
    <mkdir dir="${build.dir}"/>

    <javac destdir="${build.dir}" source="1.4" target="1.4" debug="true"
    deprecation="false" optimize="false" failonerror="true">
    <src path="${src.dir}"/>
    <classpath refid="master-classpath"/>
    </javac>

    <copy todir="${build.dir}">
    <fileset dir="${src.dir}">
          <exclude name="**/*.java"/>
          <exclude name="**/*.properties_GBK"/>
    </fileset>
    </copy> <native2ascii encoding="GBK" src="${src.dir}" dest="${build.dir}" ext=".properties" includes="*.properties_GBK"/>
    </target>
    <target name="createTables" depends="set-db-properties" description="Initialize the selected database">
    <ant dir="${db.dir}" target="createTables"/>
    </target> <target name="sampleData" depends="set-db-properties" description="create sample data">
    <ant dir="${db.dir}" target="sampleData"/>
    </target> <target name="dropTables" depends="set-db-properties" description="clear any created data">
    <ant dir="${db.dir}" target="dropTables"/>
    </target> <target name="tests" depends="build,dropTables,createTables" description="Run tests using initialized database">
    <delete dir="${testbuild.dir}"/>
    <delete dir="${testreports.dir}"/>
    <delete dir="${testhtml.dir}"/> <mkdir dir="${testbuild.dir}"/>
    <mkdir dir="${testreports.dir}"/>
    <mkdir dir="${testhtml.dir}"/> <javac srcdir="${testsrc.dir}" destdir="${testbuild.dir}" deprecation="true">
    <classpath path="${build.dir}"/>
    <classpath refid="master-classpath"/>
    <classpath path="${rsForum.root}/lib/junit.jar"/>
    </javac> <junit printsummary="true" fork="yes">
    <formatter type="xml"/>
    <test name="test.com.redsaga.hibernatesample.step3.AllTests" todir="${testreports.dir}"/>
    <classpath path="${build.dir}"/>
    <classpath path="${src.dir}"/>
    <classpath path="${testbuild.dir}"/>
    <classpath path="${testsrc.dir}"/>
    <classpath refid="master-classpath"/> </junit> <junitreport todir="${testhtml.dir}">
    <fileset dir="${testreports.dir}">
    <include name="TEST-*.xml"/>
    </fileset>
    <report format="frames" todir="${testhtml.dir}"/>
    </junitreport> </target> <target name="all" depends="clean,dropTables,createTables,sampleData,copyjar,build,tomcat" description="clean,dropTables,createTables,sampleData,copyjar,build,tomcat"/>

    <target name="report" >
    <exec dir="${testhtml.dir}" executable="cmd.exe">
       <arg line="/c start index.html"/>
       </exec>
       </target> <target name="console" description="launch hibernate console">
    <java classname="com.redsaga.util.hibernateConsole2Loader.Loader" fork="true">
        <classpath>
            <path refid="console-classpath"/>
        </classpath>
    </java>
    </target> <target name="tomcat" description="">
    <exec dir="tomcat-run" executable="cmd.exe" >
      <arg line="/c start.bat"/>
    </exec>
    </target></project>
      

  5.   

    我下载的随书源程序中还有一个hibernate3 版的论坛程序和hibernate2的build.xml文件一样
    ant all可以正常启动为什么hibernate2的就不可以,郁闷。
      

  6.   

    换了3.1.7的jar包
    现在问题和以前一样,还是 在ant启动tomcat时 JDBC   Driver   class   not   found:   
    几近绝望了
      

  7.   

    你把3.1.7的jar 放到那里的?
    ant 的这个<target name="copyjar" description="copy jar files into WEB-INF\lib">
    应该是拷贝jar包的,你放到webwork-2.1.7的jar包的目录里面去,看看,ant执行完成之后
    看看web\WEB-INF\lib 目录下是不是把3.1.7的jar放到里面去了。
      

  8.   

    竟然只有您一位来回答问题,
    再次感谢。问题解决了,是程序的hibernate.cfg.xml文件有问题... ...瀑布汗啊哎,csdn多点热心人就好了。
    结贴
      

  9.   

    怎么解决的?
    难道是hibernate.cfg.xml指定的driver_class不是mysql
      

  10.   

    下载的原文件里hibernate.cfg.xml里的driver_class没有值,所以找不到驱动
    加上com.mysql.jdbc.Driver就可以了,另外hibernate.connection.url属性也要改