为什么 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 修复其库中的此错误之前,这似乎是唯一的选择。