JDBC中缺少dll

时间:2013-06-24 13:42:55

标签: java sql authentication dll jdbc

我目前正在使用Java中的SQL。 最近我收到了这个错误:

com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path

当我在连接String中添加参数integratedSecurity=true;时会发生这种情况。 错误消息清楚地表明缺少sqljdbc_auth.dll,所以我尝试将dll放在与保留sqljdbc4.jar相同的路径中。

然而,这不起作用,所以我想知道我实际上如何将这个dll添加到我的构建路径?有没有特殊的方法呢?

10 个答案:

答案 0 :(得分:36)

sqljdbc_auth.dll保留在您的windows / system32文件夹中,它将正常工作。从此link下载sqljdbc驱动程序解压缩它,您会找到sqljdbc_auth.dll。现在保留sqljdbc_auth.dll在system32文件夹中并运行程序

答案 1 :(得分:10)

好吧,伙计们,我发现了! 我真的不需要更改java.library.path而是更改sqljdbc.jar的“本地库位置”

这是我能找到的最佳答案: https://stackoverflow.com/a/958074/2000342

现在有效,感谢您的支持!

答案 2 :(得分:4)

您需要设置一个名为java.library.path的-D系统属性,该属性指向包含sqljdbc_auth.dll的目录。

答案 3 :(得分:4)

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

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

答案 4 :(得分:3)

将java.library.path设置为包含此DLL的目录,Java使用该目录查找本机库。在命令行上指定-D开关

java -Djava.library.path = C:\ Java \ native \ libs YourProgram

C:\ Java \ native \ libs应该包含sqljdbc_auth.dll

如果要使用Eclipse,请查看此SO post;如果要以编程方式设置,请查看this blog

答案 5 :(得分:2)

如果缺少dll文件的情况,可以从此链接下载dll文件 http://en.osdn.jp/projects/sfnet_dose-grok/downloads/sqljdbc_auth.dll/

否则您需要提供您尝试连接的数据库的用户名和密码,并将身份验证设为false

答案 6 :(得分:2)

在我的情况下,在这个问题上花了很多天之后,下面这个问题的绅士帮助是解决方案,它对我有用。 问题: 在尝试使用 Spring Boot 将 SqlServer DB 与服务帐户身份验证连接时,它抛出以下异常。

com.microsoft.sqlserver.jdbc.SQLServerException:此驱动程序未配置为集成身份验证。 ClientConnectionId:ab942951-31f6-44bf-90aa-7ac4cec2e206 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2392) ~[mssql-jdbc-6.1.0.jre8.jar!/:na] 引起:java.lang.UnsatisfiedLinkError:sqljdbc_auth(在java.library.path中找不到) 在 java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1462) ~[na:2.9 (04-02-2020)] 解决方案:按照以下步骤使用 JTDS 驱动程序

  1. 使用 JTDS 驱动程序而不是 sqlserver 驱动程序。

    ----------------- 使用 JTDS 的专用选择更新属性 PROD ----------------

    datasource.dedicatedpicup.url=jdbc:jtds:sqlserver://YourSqlServer:PortNo/DatabaseName;instance=InstanceName;domain=DomainName
    datasource.dedicatedpicup.jdbcUrl=${datasource.dedicatedpicup.url}
    datasource.dedicatedpicup.username=$da-XYZ
    datasource.dedicatedpicup.password=ENC(XYZ)
    datasource.dedicatedpicup.driver-class-name=net.sourceforge.jtds.jdbc.Driver
    
  1. 在配置属性中删除 Hikari。

    #datasource.dedicatedpicup.hikari.connection-timeout=60000 #datasource.dedicatedpicup.hikari.maximum-pool-size=5

  2. 添加 sqljdbc4 依赖项。

    com.microsoft.sqlserver sqljdbc4 4.0
  3. 添加 Tomcatjdbc 依赖。

    org.apache.tomcat tomcat-jdbc
  4. 从 spring-boot-starter-jdbc 依赖中排除 HikariCP。

    org.springframework.boot spring-boot-starter-jdbc com.zaxxer HikariCP

答案 7 :(得分:0)

您必须确保您的DLL位于类路径中。

这样做的一种方法是将路径放在PATH环境变量中的DLL。

其他选项是将其添加到变量LD_LIBRARY_PATH中的VM参数,如下所示:

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass

答案 8 :(得分:0)

朋友我因为版本不同而遇到了同样的问题 确保以下几点 *你的jdk位64或32 *你的sqljdbc_4.0 \ enu \ auth \ x64或x86这个目录的路径取决于你的jdk位 * sqljdbc_auth.dll根据您的位x64或x86选择此文件,并将其放在system32文件夹中,它将适用于我

答案 9 :(得分:0)

sqljdbc_auth.dll位于您安装的sqljdbc_x.x文件夹中,用于检索auth文件夹中的sqljdbcxx.jar文件。在scala项目的基础上创建一个lib文件夹,并将sqljdbc_auth.dll移动到此文件夹中。这可以确保您获得正确的文件,例如与sqljdbcxx.jar文件匹配的64位或32位。