SQL Server 2008インスタンスに接続するJava EE Webアプリケーション。 Tomcatログは次のとおりです。
警告:sqljdbc_auth.dllの原因の読み込みに失敗しました:-Java.library.pathにsqljdbc_authがありません
1)JDBCドライバーをダウンロード こちら .
2)ファイルを解凍し、sqljdbc_version\fra\auth\x86または\ x64に移動します
3)sqljdbc_auth.dllをC:\ Program Files\Java\jre_Version \にコピーしますbin
4)最後にEclipseを再起動します
Eclipseからこれを行う場合の手順は次のとおりです。
1)C:ドライブにフォルダー「sqlauth」を作成し、dllファイルをコピーしますsqljdbc_auth.dllフォルダへ
1)Run> Run Configurationsに移動します
2)クラスの「Arguments」タブを選択します
3)VM引数に以下のコードを追加します。
-Djava.library.path="C:\\sqlauth"
4)[適用]をクリックして[実行]をクリックします
他の methods を試してみてください。
エラーは明らかですよね?
Sqljdbc_auth.dllが存在するパスを追加していません。システム内でDLLがある場所を見つけ、それをクラスパスに追加します。
それも機能しない場合は、DLLが存在するフォルダー(\ Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\enu\auth\x86を想定しています)を追加します) PATH変数。
再びantまたはcmdを使用する場合は、-Djava.library.path = [path to MS_SQL_AUTH_DLL]を使用して明示的にパスを指定する必要があります
簡単に修正するには、次の手順を実行します。
同じ問題が発生しましたが、自分のアプリケーション内でした。 dllをコピーするソリューションはあまり便利ではないので気に入らなかったので、いくつかの調査を行い、次のプログラムによるソリューションを思い付きました。
基本的に、SQLサーバーへの接続を行う前に、パスに_sqljdbc_auth.dll
_を追加する必要があります。
PathHelper.appendToPath("C:\\sqljdbc_6.2\\enu\\auth\\x64");
方法を知ったら:
_import Java.lang.reflect.Field;
public class PathHelper {
public static void appendToPath(String dir){
String path = System.getProperty("Java.library.path");
path = dir + ";" + path;
System.setProperty("Java.library.path", path);
try {
final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
sysPathsField.setAccessible(true);
sysPathsField.set(null, null);
}
catch (Exception ex){
throw new RuntimeException(ex);
}
}
}
_
現在、統合認証はチャームのように機能します:)。
解決するために、次のことを行いました。
sqljdbc_auth.dll
into dir:C:\Windows\System32