为什么 Hibernate 抱怨无法加载身份验证 DLL,即使它是在 Maven 中配置的?
Why does Hibernate complain about being unable to load the authentication DLL even though its configured in Maven?
我在 Windows 中有一个 Java 项目,具有以下 Maven 配置:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre8</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc_auth</artifactId>
<version>10.2.0.x64</version>
<type>dll</type>
</dependency>
以及以下 Hibernate 配置:
<property name="hibernate.connection.url">
jdbc:sqlserver://localhost;databaseName=<DBNAME>;
integratedSecurity=true;TrustServerCertificate=True;domain=<DOMAIN>
</property>
当 运行 具有 integratedSecurity=false
的应用程序时,一切正常。但是将其切换为 true
会导致以下错误:
This driver is not configured for integrated authentication
Unable to load authentication DLL
这里出了什么问题?
原来 SQL 服务器 JDBC 驱动程序中有一个 known bug,其中 Maven-provided DLL 在切换到集成身份验证时未被使用。相反,JDBC 尝试从以下位置加载相同的 DLL:
C:\Program Files\Java\jdk-<version>\bin
将 mssql-jdbc_auth-10.2.0.x64.dll
复制到该文件夹解决了问题,集成身份验证现在可以使用了。在 Microsoft 修复其库中的此错误之前,这似乎是唯一的选择。
我在 Windows 中有一个 Java 项目,具有以下 Maven 配置:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>10.2.0.jre8</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc_auth</artifactId>
<version>10.2.0.x64</version>
<type>dll</type>
</dependency>
以及以下 Hibernate 配置:
<property name="hibernate.connection.url">
jdbc:sqlserver://localhost;databaseName=<DBNAME>;
integratedSecurity=true;TrustServerCertificate=True;domain=<DOMAIN>
</property>
当 运行 具有 integratedSecurity=false
的应用程序时,一切正常。但是将其切换为 true
会导致以下错误:
This driver is not configured for integrated authentication
Unable to load authentication DLL
这里出了什么问题?
原来 SQL 服务器 JDBC 驱动程序中有一个 known bug,其中 Maven-provided DLL 在切换到集成身份验证时未被使用。相反,JDBC 尝试从以下位置加载相同的 DLL:
C:\Program Files\Java\jdk-<version>\bin
将 mssql-jdbc_auth-10.2.0.x64.dll
复制到该文件夹解决了问题,集成身份验证现在可以使用了。在 Microsoft 修复其库中的此错误之前,这似乎是唯一的选择。