6

わかりました、私は混乱しています。私の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

私のクラスパスが設定されています:

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 です。

4

6 に答える 6

9

-jar を java.exe に渡すと、指定された Jar ファイルのマニフェストからクラスパスが取得されます。すべての外部クラスパス設定 (%CLASSPATH% など) は無視されます。

次のいずれかを実行します。

  1. java -cp ...\myapp.jar MainClassName を使用します

  2. sqljdbc.jar を myapp.jar のマニフェストの Class-Path フィールドに入れます。

  3. プログラムで sqljdbc.jar を検出してロードします。

于 2014-03-07T15:08:58.867 に答える
2

WebContent-->WEB_INF->lib フォルダーの下に sqljdbc4.jar をコピーします。これで私の問題は解決しました。

于 2016-02-02T10:41:53.597 に答える
1

アプリケーション ZK をプログラムする場合は、sqljdbc4.jar をフォルダー WebContent -> WEB_INF -> lib に配置します。

参考: アナンドのコメント。

于 2016-09-01T16:28:43.873 に答える
1

sqljdbc4.jar のクラス パスを設定します。

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

あなたがEclipseユーザーの場合は、不要な.jarファイルを削除してくださいsqljdbc

于 2014-06-20T08:59:37.527 に答える
0

新しいコマンド プロンプトを開き、以下の手順を試してください。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"
于 2014-03-07T15:10:34.200 に答える
0

Eclipse STS を更新した後にこのエラーが発生しました。更新中にサーバーが構成情報をすべて忘れてしまったことが判明しました。サーバーのクラスパスと環境変数をもう一度設定する必要があり、問題は解決しました。

于 2014-12-03T20:57:01.363 に答える