我的源程序如下: import java.sql.*; 
import javax.swing.*; class ConnectServer2 { 
static Connection con = null; 
public static boolean conn(String url, String username, String password) { 
try{ 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
} catch(Exception e) { 
e.printStackTrace(); 
return false; 

try{ 
con = DriverManager.getConnection(url, username, password); 
} catch(SQLException e) { 
e.printStackTrace(); 
return false; 

return true; 
} public static boolean close() { 
try{ 
con.close(); 
con = null; 
} catch(SQLException e) { 
return false; 

return true; 
} public static void main(String[] args) { 
if(conn("jdbc: microsoft: sqlserver: //localhost: 1433; DatabaseName = xsgl", "sa", "")) { 
JOptionPane.showMessageDialog(null, "数据库连接成功!"); 
close(); 

else { 
JOptionPane.showMessageDialog(null, "数据库连接失败!"); 


} ---------------------------------------------------------------- 
编译通过 
执行时出现如下提示: java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver 
        at java.net.URLClassLoader$1.run(Unknown Source) 
        at java.security.AccessController.doPrivileged(Native Method) 
        at java.net.URLClassLoader.findClass(Unknown Source) 
        at java.lang.ClassLoader.loadClass(Unknown Source) 
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
        at java.lang.ClassLoader.loadClass(Unknown Source) 
        at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
        at java.lang.Class.forName0(Native Method) 
        at java.lang.Class.forName(Unknown Source) 
        at ConnectServer2.conn(ConnectServer2.java:8) 
        at ConnectServer2.main(ConnectServer2.java:33) 
------------------------------------------------------------ 
我已经安装了SQL2000 JDBC的驱动SP4,还有把msbase.jar, mssqlserver.jar和msutil.jar这三个文件放到了jdk\jre\lib\ext目录下 我想知道为什么不能连接上数据库呢???

解决方案 »

  1.   

    要看你用什么工具了
    像很多IDE都需要把三方的包导入进去
    一般的文本编辑工具的话,可以把包添加入classpath里
    如果是web工程的话,需要把包放到lib文件夹下面
      

  2.   

    jdk\jre\lib\ext目录下的不需要配置就会自动加载
      

  3.   

    java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver  
    把jar放到你的classpath 里面才可以!在 cmd 里面输入
    set看看输出的CLASSPATH 是否包含了这3个jar,如果没有。到环境变量里把它们加上去!
      

  4.   

    我想楼主的意思大家都没明白 jdk\jre\lib\ext目录下的不需要配置就会自动加载
      

  5.   

    老紫说的是对的,应该在配置在这里…………因为你的程序首先是认识自己的环境变量哈,不是你说的jdk\jre\lib\ext目录下......
      

  6.   

    找不到这个类么,很常见的一个异常。如果你是用eclipse进行开发的就请你把那3个jar包加载到工程里面去,是手工写就把jar包的路径写到系统环境变量classpath里去吧。
      

  7.   

    classpathsp4补丁打好了??()
      

  8.   

    com.microsoft.jdbc.sqlserver.SQLServerDriver  java.lang.ClassNotFoundException
    三个db文件放到了jdk\jre\lib\ext目录下 是可以连接的 
      

  9.   

    呵呵,最终明白最后的答案了,这个问题的关键是Class.forName到底调用哪个加载器的问题Class.forName加载使用的类,这种方式没有指定某个特定的ClassLoader,会使用调用类的ClassLoader。
    也就是说调用这个方法的类的类加载器将会用于加载这个类。比如在类A中使用Class.forName加载类B,那么加载类A的类加载器将会用于加载类B,这样两个类的类加载器是同一个。
    ConnectServer2调用的是System加载器,所以com.microsoft.jdbc.sqlserver.SQLServerDriver也会调用System加载器
    你在jdk\jre\lib\ext需要Extension加载器,所以就出错了,所以必须放到classpath下面。可以结贴了
      

  10.   

    我的机器上没有设置classPath 我只把java/bin路径放入到path中
    放入jdk\jre\lib\ext中的jar再编译时自动载入
    当然这样会出现和jre\lib\ext冲突问题
    不明lz情况
    搞定后说明原因
      

  11.   

    我已经把那三个包的路径放到classpath里了啊
    怎么还是不行呢
    像F:\jdk1.6.0_02\jre\lib\ext\msbase.jar头大了我
      

  12.   

    我重装了系统,重装了JDK还是不行
    高手求助啊!!
      

  13.   

    Java中加载器的种类大致可以分为四种:Bootstrap ClassLoader(由C++语言写成),系统加载器(也就是内部类AppClassLoader),ExtClassLoader,以及java.net.UrlClassLoader.          当我们运行一个程序时,首先是找到JDK安装目下的jvm.dll来启动JAVA虚拟机,而后Bootstrap ClassLoader产生,接下来就是Bootstrap ClassLoader来加载ExtClassLoader,并且指定ExtClassLoader的父加载器为Bootstrap ClassLoader,但是因为Bootstrap ClassLoader用C++语言写的,所以用JAVA的观点来看,这个加载器的实例是不存在的,所以ExtClassLoader的父加载器被设置为了null,然后就是Bootstrap ClassLoader将AppClassLoader装载,并指定其父加载器为ExtClassLoader。        JAVA是按照加载器的委派模型来实现的。这种模型是JAVA安全性机制的保证。并且值得我们注意的就是这几个加载器的默认加载类的路径。对于AppCLassLoder来说,它的路径也就是我们的classpath里面的路径。而对于ExtClassLoader来说,它的路径是jre\lib\ext\classes.对于URLClassLoader来说,它的加载路径是我们指定的url。
      

  14.   

    找不到类啊,就是说Class.forname();出错啦.
    就是大家说的 三个jar包 没有放到classpath环境变量下.
    楼主网上 搜索下吧,解决方法很多.
    ps:楼主用的什么IDE工具?