38

我有一个连接到 SQL Server 2008 实例的 Java EE Web 应用程序。除了其中一个之外,我在连接和检索所有表时都没有任何问题。Tomcat日志中的错误是:

警告:无法加载 sqljdbc_auth.dll 原因:- java.library.path 中没有 sqljdbc_auth

4

7 回答 7

55

1)在此处下载JDBC 驱动程序


2) 解压文件并转到sqljdbc_version\fra\auth\x86\x64 3) 将 sqljdbc_auth.dll
复制到C:\Program Files\Java\jre_Version\bin 4) 最后重启 eclipse

于 2016-04-13T11:22:43.777 回答
17

如果您想从 Eclipse 执行此操作,请执行以下步骤:

1) 在你的 C: 驱动器中创建一个文件夹'sqlauth',并将 dll 文件sqljdbc_auth.dll复制到该文件夹​​中

1)转到运行>运行配置

2)为您的班级选择“参数”选项卡

3)在VM参数中添加以下代码:

-Djava.library.path="C:\\sqlauth"

4)点击“应用”并点击“运行”

随意尝试其他方法

于 2016-06-14T10:55:05.950 回答
9

为了便于修复,请按照下列步骤操作:

  1. 转到:https ://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url#Connectingintegrated
  2. 下载 JDBC 文件并解压到您的首选位置
  3. 打开与您的操作系统 x64 或 x86 匹配的 auth 文件夹
  4. 复制 sqljdbc_auth.dll 文件
  5. 粘贴到:C:\Program Files\Java\jdk_version\bin
  6. 重新启动 eclipse 或 netbeans
于 2017-09-27T00:00:53.197 回答
7

错误很明显,不是吗?

您尚未添加存在 sqljdbc_auth.dll 的路径。在系统中找出 DLL 所在的位置并将其添加到您的类路径中。

如果这也不起作用,请将存在 DLL 的文件夹(我假设 \Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\enu\auth\x86)添加到您的 PATH 变量中。

同样,如果您要通过 ant 或 cmd,则必须使用 -Djava.library.path=[path to MS_SQL_AUTH_DLL] 明确提及路径

于 2012-07-29T06:27:29.710 回答
3

我刚刚遇到了同样的问题,但在我自己的应用程序中。我不喜欢复制 dll 的解决方案,因为它不是很方便,所以我做了一些研究并提出了以下编程解决方案。

基本上,在与 SQL 服务器进行任何连接之前,您必须添加sqljdbc_auth.dll到路径.. 这很容易说:

PathHelper.appendToPath("C:\\sqljdbc_6.2\\enu\\auth\\x64");

一旦你知道怎么做:

import java.lang.reflect.Field;

public class PathHelper {
    public static void appendToPath(String dir){

        String path = System.getProperty("java.library.path");
        path = dir + ";" + path;
        System.setProperty("java.library.path", path);

        try {

            final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
            sysPathsField.setAccessible(true);
            sysPathsField.set(null, null);

        }
        catch (Exception ex){
            throw new RuntimeException(ex);
        }

    }

}

现在集成身份验证就像一个魅力:)。

感谢https://stackoverflow.com/a/21730111/1734640让我弄清楚这一点。

于 2017-09-07T13:25:18.470 回答
1

为了解决我做了以下事情:

  1. 复制sqljdbc_auth.dll到目录:C:\Windows\System32
  2. 重新启动我的应用程序
于 2019-05-15T10:21:51.030 回答
0

我通过以下方式解决了这个问题:

  1. 将 com.microsoft.sqlserver 从 6.1.0.jre8 升级到 10.1.0.jre8-preview:

    <dependency>
         <groupId>com.microsoft.sqlserver</groupId>
         <artifactId>mssql-jdbc</artifactId>
         <version>10.1.0.jre8-preview</version>
    </dependency>
    
  2. 添加缺少的依赖项:

     <dependency>
         <groupId>net.sourceforge.jtds</groupId>
         <artifactId>jtds</artifactId>
         <version>1.3.1</version>
     </dependency>
    
  3. 使用以下 jdbc 连接:

jdbc:sqlserver://;authenticationScheme=NTLM;integratedSecurity=true;domain=;databasename=;encrypt=true;trustServerCertificate=true;user=;password=

于 2022-01-13T14:22:39.857 回答