gpt4 book ai didi

java.lang.UnsatisfiedLinkError : Native Library sqljdbc_auth. dll 已经加载到另一个类加载器中

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:50 28 4
gpt4 key购买 nike

我有多个应用程序需要使用 Windows 身份验证连接到 MSSQL。

加载的第一个 webApp 工作正常。但其余失败提示

Caused by: java.lang.UnsatisfiedLinkError: Native Library $tomcat/bin/sqljdbc_auth.dll already loaded in another classloader

下面是使用的代码

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection= DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=XXX;integratedSecurity=true");

我已放置 sqljdbc*.jar --> tomcat*/lib 和 sqljdbc_auth.dll --> tomcat*/bin

似乎我所有的应用程序都试图多次加载共享库($tomcat/bin/dll)。因此,第一个负载有效,其余负载失败。

编辑:我知道原生库(DLL)只能加载到JVM中一次,因此出现错误,但我在网上找了一圈还是没有解决办法。

如何只加载一次 dll?

请帮忙!!

最佳答案

我猜。即删除行

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

会解决问题。

DriverManager 的 javadoc 中所述

The DriverManager methods getConnection and getDrivers have been enhanced to support the Java Standard Edition Service Provider mechanism.
...
Applications no longer need to explictly load JDBC drivers using Class.forName().

编辑 这需要一个支持 JDBC 4.0 API 的 jdbc 驱动程序。 Microsoft JDBC 驱动程序 4.0 应该是这种情况(参见:https://learn.microsoft.com/en-us/sql/connect/jdbc/system-requirements-for-the-jdbc-driver)

您可以在 https://learn.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix 找到 Microsoft JDBC 驱动程序支持哪个 SQL 服务器版本的矩阵

关于java.lang.UnsatisfiedLinkError : Native Library sqljdbc_auth. dll 已经加载到另一个类加载器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48180078/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com