我正试图在我的Maven项目中连接到SQL DB,但一直收到以下异常:
"com.microsoft.sqlserver.jdbc.SQLServerException:此驱动程序未配置为集成身份验证….","..由以下原因引起:java.lang.UnsisfiedLinkError:java.library.path中没有mssql-jdbc_auth-8.2.1.x64….".
我已经尝试了java.library.path中没有sqljdbc_auth和UnsatisfiedLinkError的建议:java.library_path中没有sqljdbc_aauth,但它对我不起作用。
我已将sqljdbc_auth.dll的路径放在:中
-
全局PATH变量全局PATH变量屏幕截图
-
C: \Program Files\Java\jdk-13.0.2\bin C:\Program Files\Java\jdk-13.2.2\bin 截图
-
pom.xml(作为surefire插件依赖项中的配置(pom.xml屏幕截图
这是我的代码:
public class JDBC {
@Test
public void test() throws SQLException, ClassNotFoundException {
String UserName="sa";
String Password="Error911";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String DB_URL ="jdbc:sqlserver://localhost:1433;databaseName=QADB;integratedSecurity=true;";
//OR by using ip
//DB_URL ="jdbc:sqlserver://192.168.0.104;databaseName=QADB;integratedSecurity=true;";
Connection con = DriverManager.getConnection(DB_URL, UserName, Password);
}
}
控制台输出中的异常:
com.microsoft.sqlserver.jdbc.SQLServerException:此驱动程序不是配置用于集成身份验证。。。。。。。。。。。。。。。。。。。。。。。。。。。
引起原因:java.lang.UnsisfiedLinkError:java.library.path中没有mssql-jdbc_auth-8.2.1.x64:[C:\Users\Automation\Microsoft JDBC Driver 6.0 for SQL服务器\sqljdbc_6.0\chs\auth\x64]。。……
类路径中似乎没有mssql-jdbc_auth-8.2.1.x64
文件。
据我所知,该文件包含在Microsoft SQL JDBC驱动程序(enu/auth/x64
文件夹(中:https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-服务器-ver15
您可以将该文件添加到类路径中(例如,将其复制到:C:Program FilesJavajdk-13.0.2bin
(并修复错误。
我也遇到了同样的问题,花了几个小时才解决。
-
确保将
mssql-jdbc_auth-8.2.1.x64
文件而不是sqljdbc_xa.dll
文件复制到C:Program FilesJavajdk-13.0.2bin folder
中。根据你的垃圾箱文件夹的截图,我不认为这是问题所在。 -
重新启动Eclipse并再次运行它。我在运行eclipse的情况下将文件复制到bin文件夹中,但没有成功。只有在我重新启动eclipse之后,驱动程序才开始正常工作。
其他答案中的建议会起作用,但对我来说,它们有点误导。
实际上,您所需要做的就是将所需版本的mssql-jdbc_auth-<version>.x64.dll
放在系统路径上->将其添加到Path环境变量中,以便能够找到此dll。
您可以从下载相同版本的mssqljdbc驱动程序来获得mssql-jdbc_auth-<version>.x64.dll
https://learn.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-ver15#java和jdbc规范支持从enuauthx64
文件夹中提取mssql-jdbc_auth.dll
只需遵循以下步骤,它肯定会修复"java.library.path中没有mssql-jdbc_auth-8.2.1.x64;以及";JDBC SQLServerException:"此驱动程序未针对集成身份验证进行配置"问题。
-
从下载
sqljdbc_<version>_enu.zip
https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15,根据您的Java版本。 -
解压缩它,阅读install.txt并按照它所说的操作
-
将
mssql-jdbc_auth-8.2.2.x64.dll
(存在于路径->C:\Program Files/Microsoft JDBC DRIVER 8.2 for SQL Server/sqljdbc_/enu/auth/x64中(粘贴到Java/jre8/bin和Java/jre 8/lib
为了能够与JDBC连接,您需要定义如下连接:
"jdbc:sqlserver://*******;authenticationScheme=NTLM;integratedSecurity=true;domain=******;databasename=**********;encrypt=true;trustServerCertificate=true;user=*******;password=*******;"
使用以下依赖项:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre8</version>
</dependency>
您应该删除maven依赖项:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
然后:添加依赖JDBC驱动程序jar手动下载到这里
这对我有用。
我也遇到了同样的问题,我也浏览了你提到的帖子,我通过在\java\jre\bin\中添加mssql-jdbc_auth-8.2.2.x64.dll而不是\java\bin来解决了这个问题。我使用的是JDK,而不是JRE。