英文:
no mssql-jdbc_auth-8.2.1.x64 in java.library.path
问题
我正在尝试在我的Maven项目中连接到SQL数据库,但一直收到以下异常:
"com.microsoft.sqlserver.jdbc.SQLServerException: 该驱动程序未配置为集成身份验证... "," ...导致原因:java.lang.UnsatisfiedLinkError:java.library.path中没有mssql-jdbc_auth-8.2.1.x64... "。
我已经尝试了来自https://stackoverflow.com/questions/11707056/no-sqljdbc-auth-in-java-library-path和https://stackoverflow.com/questions/56953643/unsatisfiedlinkerror-no-sqljdbc-auth-in-java-library-path的建议,但对我没有起作用。
我已将sqljdbc_auth.dll的路径放入:
-
全局PATH变量 全局PATH变量截图
-
C:\Program Files\Java\jdk-13.0.2\bin C:\Program Files\Java\jdk-13.0.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.UnsatisfiedLinkError:java.library.path中没有mssql-jdbc_auth-8.2.1.x64:
[C:\Users\Automation\Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\enu\auth\x64]...
...
英文:
I'm trying to connect to SQL DB in my Maven project, but keep getting following exception:
"com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ...", "..Caused by: java.lang.UnsatisfiedLinkError: no mssql-jdbc_auth-8.2.1.x64 in java.library.path....".
I've tried out suggestions from https://stackoverflow.com/questions/11707056/no-sqljdbc-auth-in-java-library-path and https://stackoverflow.com/questions/56953643/unsatisfiedlinkerror-no-sqljdbc-auth-in-java-library-path but it didn't work for me.
I've put the path to sqljdbc_auth.dll in:
-
Global PATH variable Global PATH variable screenshot
-
C:\Program Files\Java\jdk-13.0.2\bin C:\Program Files\Java\jdk-13.0.2\bin screenshot
-
pom.xml (as a configuration in surefire plugin dependency)
pom.xml screenshot
And here is my code:
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);
}
}
And the exception in console output:
> com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not
> configured for integrated authentication...........................
>
> ...Caused by: java.lang.UnsatisfiedLinkError: no mssql-jdbc_auth-8.2.1.x64 in java.library.path:
> [C:\Users\Automation\Microsoft JDBC Driver 6.0 for SQL
> Server\sqljdbc_6.0\enu\auth\x64]..
....
答案1
得分: 4
it seems that you don't have the mssql-jdbc_auth-8.2.1.x64
file in your classpath.
As far as I know that file is included in the Microsoft SQL JDBC driver (enu/auth/x64
folder): https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
You can add that file to your classpath (for example copy it to: C:\Program Files\Java\jdk-13.0.2\bin
) and fix the error.
英文:
it seems that you don't have the mssql-jdbc_auth-8.2.1.x64
file in your classpath.
As far as I know that file is included in the Microsoft SQL JDBC driver (enu/auth/x64
folder): https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
You can add that file to your classpath (for example copy it to: C:\Program Files\Java\jdk-13.0.2\bin
) and fix the error.
答案2
得分: 4
我遇到过同样的问题,花了我几个小时才解决。
-
确保你复制的是
mssql-jdbc_auth-8.2.1.x64
文件,而不是sqljdbc_xa.dll
文件,复制到C:\Program Files\Java\jdk-13.0.2\bin
文件夹中。根据你的 bin 文件夹的截图,我不认为这是问题所在。 -
重新启动 Eclipse 并再次运行。我在 Eclipse 运行时将文件复制到 bin 文件夹中,但没有成功。只有在我重新启动 Eclipse 后,驱动程序才开始正常工作。
英文:
I had this same problem, and it took me hours to figure out.
-
Make sure that you're copying the
mssql-jdbc_auth-8.2.1.x64
file and not thesqljdbc_xa.dll
file into theC:\Program Files\Java\jdk-13.0.2\bin folder
. According to the screenshot of your bin folder, I don't think this is the issue. -
Restart Eclipse and run it again. I was copying the file into the bin folder with eclipse running and I had no success. Only after I restarted eclipse did the driver begin to work correctly.
答案3
得分: 2
其他答案中的建议会起作用,但对我来说它们有点误导性。
实际上,你只需要将所需版本的 mssql-jdbc_auth-<version>.x64.dll
放在系统路径上 -> 将其添加到 Path 环境变量 中,以便能够找到此 dll。
您可以通过从以下网址下载与 mssql jdbc 驱动程序相同版本的驱动程序
https://learn.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-ver15#java-and-jdbc-specification-support
然后从 enu\auth\x64\
文件夹中提取 mssql-jdbc_auth dll。
英文:
The suggestions in other answers will do the trick, but for me they were bit misleading.
Actually all you need to do is put the required version of mssql-jdbc_auth-<version>.x64.dll
on system path -> add it to the Path environment variable to be able to find this dll.
You can obtain mssql-jdbc_auth-<version>.x64.dll
by downloading the same version of mssql jdbc driver from
https://learn.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-ver15#java-and-jdbc-specification-support
and extracting the mssql-jdbc_auth dll from enu\auth\x64\
folder
答案4
得分: 1
只需按照以下步骤操作,就可以解决“java.library.path中没有mssql-jdbc_auth-8.2.1.x64”以及“JDBC SQLServerException:未配置此驱动程序进行集成身份验证”问题。
-
根据您的Java版本,从https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15下载
sqljdbc_<version>_enu.zip
。 -
解压缩文件,阅读install.txt并按照其中的说明进行操作。
-
将位于路径C:/Program Files/Microsoft JDBC DRIVER 8.2 for SQL Server/sqljdbc_
/enu/auth/x64中的 mssql-jdbc_auth-8.2.2.x64.dll
复制到Java/jre8/bin和Java/jre8/lib文件夹中。
英文:
Just follow below steps and it will surely turn out to fix "no mssql-jdbc_auth-8.2.1.x64 in java.library.path" as well as "JDBC SQLServerException: “This driver is not configured for integrated authentication" issue.
-
Download
sqljdbc_<version>_enu.zip
from https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15 as per you Java version. -
Unzip it, read install.txt and do as it says
-
Paste
mssql-jdbc_auth-8.2.2.x64.dll
(present inside path -> C:/Program Files/Microsoft JDBC DRIVER 8.2 for SQL Server/sqljdbc_<version>/enu/auth/x64 to
Java/jre8/bin and to Java/jre8/lib
答案5
得分: 0
你应该删除Maven依赖项:
然后手动添加JDBC驱动程序jar的依赖 在此处下载
这对我起作用。
英文:
You should delete maven dependency:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
Then:
add dependency JDBC driver jar manually download here
This is worked for me.
答案6
得分: 0
为了能够与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>
英文:
In order to be able to connect with the JDBC, you need to define the connection as follows:
"jdbc:sqlserver://*******;authenticationScheme=NTLM;integratedSecurity=true;domain=******;databasename=**********;encrypt=true;trustServerCertificate=true;user=*******;password=*******;"
Use the following dependency:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre8</version>
</dependency>
答案7
得分: -1
我也遇到了同样的问题,我也阅读了你提到的帖子,通过将 mssql-jdbc_auth-8.2.2.x64.dll 添加到<Java 路径>\java\jre\bin\ 而不是 <Java 路径>\java\bin 中,我解决了这个问题。我当时使用的是 JDK 而不是 JRE。
英文:
I also had the same issue, and i also went through the posts that you mentioned, i resolved it by adding the mssql-jdbc_auth-8.2.2.x64.dll in <path to java>\java\jre\bin\ instead of <path to java>\java\bin. I was using a JDK and not a JRE.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论