类路径设置,但是:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver

好的,我很困惑。 我的SQL Server JAR在这里:

Volume in drive C has no label. Volume Serial Number is 8008-2D93 Directory of c:\temp 03/07/2014 09:38 AM  . 03/07/2014 09:38 AM  .. 03/05/2014 10:34 PM 222,417 output.exd 02/17/2012 02:45 PM 563,117 sqljdbc.jar 02/17/2012 02:45 PM 584,207 sqljdbc4.jar 3 File(s) 1,369,741 bytes 2 Dir(s) 21,865,553,920 bytes free 

我的Classpath设置为:

 C:\WINDOWS\system32>echo %CLASSPATH% .;C:\Program Files (x86)\Java\jre7\lib\ext\QTJava.zip;c:\temp\sqljdbc4.jar 

它是一个JDBC 4.0驱动程序,所以我不需要这样做,但我已经尝试设置类名。

 Properties connectionProps = new Properties(); connectionProps.put("user", this.jdbcUser); connectionProps.put("password", this.jdbcPass); Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn = DriverManager.getConnection(this.jdbcUrl, connectionProps); 

我仍然执行我的程序,我收到错误:

 java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver C:\WINDOWS\system32>java -jar "C:\Users\MYUSER\Documents\NetBeansProjects\myappSource\dist\myappSource.jar" -u MYUSER -p MYPASS -j "jdbc:sqlserver://127.0.0.1\\msqlserver:1433;database=MYDB" Mar 07, 2014 9:49:54 AM filters.myapp.dao.db.DbSwitcher getDatabaseForUrl SEVERE: jdbc:sqlserver://127.0.0.1\\msqlserver:1433;database=MYDB Mar 07, 2014 9:49:54 AM filters.myapp.dao.db.Database connect SEVERE: null java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver at java.net.URLClassLoader$1.run(Unknown Source) 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.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at filters.myapp.dao.db.Database.connect(Database.java:217) at filters.myapp.dao.db.Database.(Database.java:38) at filters.myapp.dao.db.MssqlDb.(MssqlDb.java:15) at filters.myapp.dao.db.DbSwitcher.getDatabaseForUrl(DbSwitcher.java:14) at filters.myapp.UserInterface.cli(UserInterface.java:76) at filters.myapp.UserInterface.(UserInterface.java:34) at filters.myapp.UserInterface.main(UserInterface.java:46) 

万一重要,我正在运行Windows 8.1。 我已经尝试过作为管理员和不是的命令提示符。

Java信息:

 C:\WINDOWS\system32>java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode) 

有任何想法吗?

SQL Server是SQL Server Express 2012。

如果将-jar传递给java.exe,那么类路径将从指定的Jar文件清单中获取; 将忽略所有外部类路径设置(例如%CLASSPATH%)。

做其中一个:

  1. 使用java -cp … \ myapp.jar MainClassName

  2. 将sqljdbc.jar放入myapp.jar清单中的Class-Path字段。

  3. 以编程方式发现并加载sqljdbc.jar。

在WebContent – > WEB_INF – > lib文件夹下复制sqljdbc4.jar。 这解决了我的问题。

设置sqljdbc4.jar的类路径

 CLASSPATH= D:\sqljdbc_4.0.2206.100_enu\sqljdbc_4.0\enu\sqljdbc4.jar; 

如果你是eclipse用户删除不必要的.jar文件sqljdbc

如果您编写应用程序ZK,则将sqljdbc4.jar放在WebContent – > WEB_INF – > lib文件夹中。

参考: Anand的评论。

打开一个新的命令提示符,并尝试使用以下步骤,它不适合在C:\ WINDOWS \ system32中工作

问题是sqljdbc4.jar未在类路径中正确设置。

  C:\Test set classpath=%classpath%;.;c:\temp\sqljdbc4.jar java -jar "C:\Users\MYUSER\Documents\NetBeansProjects\myappSource\dist\myappSource.jar" -u MYUSER -p MYPASS -j "jdbc:sqlserver://127.0.0.1\\msqlserver:1433;database=MYDB" 

更新我的Eclipse STS后出现此错误,结果发现我的服务器在更新期间忘记了所有配置信息。 我不得不重新设置服务器的类路径和环境变量,并解决了这个问题。