【问题标题】:no sqljdbc_auth in java.library.pathjava.library.path 中没有 sqljdbc_auth
【发布时间】:2012-07-29 06:01:02
【问题描述】:

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

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

【问题讨论】:

标签: java sql-server sql-server-2008 jakarta-ee


【解决方案1】:

1) 下载 JDBC 驱动程序 here


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

【讨论】:

  • 您能否为您提供的解决方案添加更多描述?
  • @AmineSoumiaa 我相信它应该在 JDK 下的 bin 下而不是在 JRE 下。我刚试过。
  • 完美答案...简单的方法。谢谢@AmineSoumiaa
【解决方案2】:

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

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

1) 转到运行>运行配置

2) 为您的班级选择“Arguments”标签

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

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

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

随意尝试其他methods

【讨论】:

  • 利用java.library.path 参数的绝佳选择。由于用户无法复制/粘贴到C:\Program Files 文件夹,因此让我非常头疼。谢谢!
  • 哦,天哪,非常感谢。经历了几十种行不通的不同方法,我快把自己逼疯了。
【解决方案3】:

为方便修复,请按照以下步骤操作:

  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

【讨论】:

    【解决方案4】:

    错误很明显,不是吗?

    您尚未添加存在 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] 明确提及路径

    【讨论】:

    • 问题出在这里:我已经搜索了互联网,响应与您的响应一样,但我的计算机中没有此 DLL 文件!!!!
    • 那么我们有一个问题,仪式?我认为你根本没有安装驱动程序!转到此链接 - msdn.microsoft.com/en-us/library/ms378428%28v=sql.90%29.aspx。他们一步一步地介绍了如何安装和使用
    • @andrewrjones JDBC 驱动程序可以。但是,如果没有此 DLL,它无法使用受信任的连接进行连接。您可以进行用户名/密码连接 - 只是不是受信任的连接。
    • 对我来说添加到 CLASSPATH 是不够的,还必须添加到路径中
    • 一点都不清楚。我添加了maven依赖,应该有,为什么还要手动下载安装?
    【解决方案5】:

    我刚刚在我自己的应用程序中遇到了同样的问题。 我不喜欢复制 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 让我解决了这个问题。

    【讨论】:

      【解决方案6】:

      为了解决,我做了以下操作:

      1. 已将sqljdbc_auth.dll 复制到目录:C:\Windows\System32
      2. 重新启动我的应用程序

      【讨论】:

        【解决方案7】:

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

        1. 升级com.microsoft.sqlserver从6.1.0.jre8到10.1.0.jre8预览:

          <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=

        【讨论】:

          【解决方案8】:

          我不得不使用 Windows 身份验证,我尝试了所有建议的解决方案,但没有成功,直到我将身份验证文件的名称更改如下:

          旧名称:mssql-jdbc_auth-10.2.0.x64.dll

          新名称:sqljdbc_auth.dll

          然后它起作用了!

          我查了一下这个案例了解更多,显然对于Windows操作系统,驱动程序默认查找sql​​jdbc_auth.dll。

          这是我发现的一个有用的链接:

          https://docs.microsoft.com/en-us/sql/connect/jdbc/feature-dependencies-of-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-10-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-04
            • 2011-07-02
            • 2010-10-29
            • 2015-02-11
            相关资源
            最近更新 更多