小弟没有任何数据库基础所以想通过做书上的“ATM应用程序”实例学习一些数据库的基本知识;书上提供了ATM的源代码以及做实例的步骤,书上用的是Cloudscape数据库,根据书上实例步骤做到以下这步时出现问题:
D:\Learning\JAVA\SimplyJava\SimplyJava-examples\Tutorial26\Comp
ATM>java ATM com.ibm.db2j.jdbc.DB2jDriver jdbc:db2j:ATM
Exception in thread "main" java.lang.NoClassDefFoundError: ATM此目录下明明有 ATM.class 和 ATM.java 文件的,请问各位大侠:为什么仍会提示这样的错误呢?谢谢!(本人的classpath变量配置为.;C:\Borland\JBuilder2005\jdk1.4\jre\lib \rt.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib;C:\Borland\JBuilder2005\jdk1.4\lib;C:\Cloudscape_5.1\lib\db2j.jar;D:\Learning\JAVA\SimplyJava\SimplyJava-examples\Tutorial26\CompletedApplication\ATM;)**********以下为源文件************:
// Tutorial 26: ATM.java
// ATM application allows users to access an account, 
// view the balance and withdraw money from the account.
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.text.*;
import javax.swing.*;
import javax.swing.event.*;public class ATM extends JFrame
{
   …………中间省略N段代码…………
   // method main
   public static void main( String[] args ) 
   {
      // check command-line arguments
      if ( args.length == 2 )
      {
         // get command-line arguments
         String databaseDriver = args[ 0 ];
         String databaseURL = args[ 1 ];         // create new ATM
         ATM atm = new ATM( databaseDriver, databaseURL );
      }
      else // invalid command-line arguments
      {
         System.out.println( 
            "Usage: java ATM databaseDriver databaseURL" );
      }   } // end method main} // end class ATM

解决方案 »

  1.   

    com.ibm.db2j.jdbc.DB2jDriver jdbc:db2j这玩意哪来的?你肯定是路径问题如果你的类没有package,就直接java ATM否则如果有package,就java packagename.ATM建议使用IDE开发
      

  2.   

    听听hellwindy的建议吧,敲命令的方式只要知道javac和java就行了。
      

  3.   

    回楼上两位大侠:
    书上说 
    参数com.ibm.db2j.jdbc.DB2jDriver 表示JDBC驱动程序;
    参数jdbc:db2j:ATM 表示数据库URL;
      

  4.   

    com.ibm.db2j.jdbc.DB2jDriver改成com.ibm.db2.jdbc.app.DB2Driver如果还是不对,那就看看db2数据库那个jdbc驱动是不是正确。
      

  5.   

    下面再补充说明一下这个问题
    此实例开头两步为:▉首先执行命令① C:\Cloudscape_5.1\frameworks\embedded\bin\setCP.bat
    显示以下内容:
    D:\Learning\JAVA\SimplyJava\SimplyJava-examples\Tutorial26\CompletedApplication\
    ATM>set CLASSPATH=C:\Cloudscape_5.1\lib\db2j.jar;C:\Cloudscape_5.1\lib\db2jtools
    .jar;C:\Cloudscape_5.1\lib\db2jcview.jar;C:\Cloudscape_5.1\lib\jh.jar;C:\Cloudsc
    ape_5.1\lib\license.jar;.;C:\Borland\JBuilder2005\jdk1.4\jre\lib \rt.jar;C:\Borl
    and\JBuilder2005\jdk1.4\jre\lib;C:\Borland\JBuilder2005\jdk1.4\lib;C:\Cloudscape
    _5.1\lib\db2j.jar;D:\Learning\JAVA\SimplyJava\SimplyJava-examples\Tutorial26\Com
    pletedApplication\ATM;
      *其中setCP.bat的内容为【
    set DB2J_INSTALL=C:\Cloudscape_5.1
    set CLASSPATH=%DB2J_INSTALL%\lib\db2j.jar;%DB2J_INSTALL%\lib\db2jtools.jar;%DB2J_INSTALL%\lib\db2jcview.jar;%DB2J_INSTALL%\lib\jh.jar;%DB2J_INSTALL%\lib\license.jar;%CLASSPATH%
    】▉然后执行命令② java ATM com.ibm.db2j.jdbc.DB2jDriver jdbc:db2j:ATM
    显示以下内容:
    D:\Learning\JAVA\SimplyJava\SimplyJava-examples\Tutorial26\CompletedApplication\
    ATM>java ATM com.ibm.db2j.jdbc.DB2jDriver jdbc:db2j:ATM
    Thank you for your interest in Cloudscape products. Your evaluation license has
    expired.
    java.sql.SQLException: No suitable driver
            at java.sql.DriverManager.getConnection(DriverManager.java:532)
            at java.sql.DriverManager.getConnection(DriverManager.java:193)
            at ATM.<init>(ATM.java:86)
            at ATM.main(ATM.java:905)
    Exception in thread "main" java.lang.NullPointerException
            at ATM.loadAccountNumbers(ATM.java:807)
            at ATM.createUserInterface(ATM.java:475)
            at ATM.<init>(ATM.java:101)
            at ATM.main(ATM.java:905)
     *以上显示java.sql.SQLException: No suitable driver表示找不到数据库驱动,到这里就做不下去了。▉为了解决驱动问题,我尝试了很多方法,后来用了下面这种方法,好像有了一点进展:
    在执行上面的命令①之前首先执行:
    set CLASSPATH=C:\Cloudscape_5.1\lib\db2j.jar然后再依次执行上面的命令①和命令②
    上面的java.sql.SQLException: No suitable driver不见了,倒是出现了另一个Exception:Exception in thread "main" java.lang.NoClassDefFoundError: ATM▊我崩溃了!!为了解决这些问题我花了几天时间去尝试各种方法……痛苦啊!请各位大侠再帮帮我吧,谢谢了!!
      

  6.   

    java.sql.SQLException: No suitable driver
            at java.sql.DriverManager.getConnection(DriverManager.java:532)
            at java.sql.DriverManager.getConnection(DriverManager.java:193)
    -----------------------------------------------------------------------------
    驱动程序错了,命令行里输入错了,按smyl9989()说的,应该没问题,劝你还是弄个IDE搞吧,比如Eclipse,否则抓狂是必然的。
      

  7.   

    还是不行……抓狂了!
    D:\Learning\JAVA\SimplyJava\SimplyJava-examples\Tutorial26\CompletedApplication\
    ATM>java ATM com.ibm.db2.jdbc.app.DB2Driver jdbc:db2j:ATM
    Exception in thread "main" java.lang.NoClassDefFoundError: ATMD:\Learning\JAVA\SimplyJava\SimplyJava-examples\Tutorial26\CompletedApplication\
    ATM>我现在还没怎么用过IDE,还停留在命令行的地步……如果现在用IDE的话估计可能要花比较多时间才能熟悉,而且很可能对这个问题还是找不着北……苦
      

  8.   

    我有点晕了,你用的是Cloudscape数据库,但是你却用了db2数据库的jdbc驱动...
      

  9.   

    哦,明白了,ibm还真有Cloudscape数据库的jdbc驱动。不好意思,先前看错了。我没用过Cloudscape数据库,但是看到它的url是这么写的:jdbc:db2j:f:\Cloudscape,和你写的不太一样啊,看看是不是这个问题。
      

  10.   

    呵呵,java入门难,难到你抓狂。
    首先,你要明白,java默认找class的过程:
    运行参数classpath->环境变量的classpath->java命令所在的jre的rt.jar
    所以
    1、如果你想要在ATM类所在目录运行ATM.class,要这么做:
    java -classpath . ATM2、按你的ATM类写法,要想使用db2j.jar中JBDC驱动类,又能正确运行ATM类,要这么做:
    java -classpath .;C:\Cloudscape_5.1\lib\db2j.jar ATM com.ibm.db2j.jdbc.DB2jDriver jdbc:db2j:ATM3、要想db2j.jar能有效运行,请安装有效的Cloudscape,因为你的运行错误的第一行如下:
    Thank you for your interest in Cloudscape products. Your evaluation license has
    expired.
    也就是license过期了。总结,解决问题首先不要抓狂,然后看清楚所有错误信息,英文不行的话baidu网络字典帮忙。