簡體   English   中英

類路徑設置,但是:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerDriver

[英]Classpath set, but: 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    <DIR>          .
03/07/2014  09:38 AM    <DIR>          ..
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.<init>(Database.java:38)
        at filters.myapp.dao.db.MssqlDb.<init>(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.<init>(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后出現此錯誤,結果發現我的服務器在更新期間忘記了所有配置信息。 我不得不重新設置服務器的類路徑和環境變量,這解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM