我不明白为什么 "no sqljdbc_auth in java.library.path" 仍然存在
I don't understand why "no sqljdbc_auth in java.library.path" persists
我正在尝试将 java 程序连接到 SQL 服务器数据库。
重要的是我在 Windows 7 机器上工作,我的 Eclipse 在我公司网络上的 Linux 机器上,SQL 服务器请求 Windows认证。
我将驱动程序 sqljdbc41.jar 复制并粘贴到我的项目位置(在 Eclipse 上右键单击项目、属性并查看位置)。
我还在同一位置粘贴了 sqljdbc_auth.dll。
我已尝试在 post 之后的“本机库位置”上添加此 .dll 的路径:
.但我仍然有这个错误:
Jul 10, 2017 10:52:35 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:39389d4c-36cd-459f-b9f8-15d3cf422b34
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2397)
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:68)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3132)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access0(SQLServerConnection.java:43)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3123)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1981)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at sqlconnectiontest.SqlSelection.main(SqlSelection.java:19)
Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1087)
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<clinit>(AuthenticationJNI.java:41)
... 13 more
我的代码如下:
package sqlconnectiontest;
import java.sql.*;
public class SqlSelection {
/**
* @param args
*/
public static void main(String[] args) {
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String userName = "myUser";
String password = "myPassword";
String url = "jdbc:sqlserver://fr0-iaascls-190.eu.company.corp:10001;databaseName=MYDATABASE;integratedSecurity=true;";
Connection con = DriverManager.getConnection(url, userName, password);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
你有什么想法可以帮助吗?谢谢:)
如果应用程序尝试使用 sqljdbc_auth.dll
的不正确架构 (x86 VS x64) 版本,您可能会收到此错误消息。尝试指定其他架构的目录路径。
如果你使用的是x64机器运行x64OS,但是你使用的JVM是x86版本,你需要指定使用x86版本的sqljdbc_auth.dll
.
我正在尝试将 java 程序连接到 SQL 服务器数据库。
重要的是我在 Windows 7 机器上工作,我的 Eclipse 在我公司网络上的 Linux 机器上,SQL 服务器请求 Windows认证。
我将驱动程序 sqljdbc41.jar 复制并粘贴到我的项目位置(在 Eclipse 上右键单击项目、属性并查看位置)。 我还在同一位置粘贴了 sqljdbc_auth.dll。 我已尝试在 post 之后的“本机库位置”上添加此 .dll 的路径: .但我仍然有这个错误:
Jul 10, 2017 10:52:35 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:39389d4c-36cd-459f-b9f8-15d3cf422b34
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2397)
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:68)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3132)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access0(SQLServerConnection.java:43)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3123)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1981)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at sqlconnectiontest.SqlSelection.main(SqlSelection.java:19)
Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1087)
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<clinit>(AuthenticationJNI.java:41)
... 13 more
我的代码如下:
package sqlconnectiontest;
import java.sql.*;
public class SqlSelection {
/**
* @param args
*/
public static void main(String[] args) {
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String userName = "myUser";
String password = "myPassword";
String url = "jdbc:sqlserver://fr0-iaascls-190.eu.company.corp:10001;databaseName=MYDATABASE;integratedSecurity=true;";
Connection con = DriverManager.getConnection(url, userName, password);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
你有什么想法可以帮助吗?谢谢:)
如果应用程序尝试使用 sqljdbc_auth.dll
的不正确架构 (x86 VS x64) 版本,您可能会收到此错误消息。尝试指定其他架构的目录路径。
如果你使用的是x64机器运行x64OS,但是你使用的JVM是x86版本,你需要指定使用x86版本的sqljdbc_auth.dll
.