我目前正在使用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添加到我的构建路径?有没有特殊的方法呢?
答案 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)
为便于修复,请按以下步骤操作:
重启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
答案 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 驱动程序
使用 JTDS 驱动程序而不是 sqlserver 驱动程序。
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
在配置属性中删除 Hikari。
#datasource.dedicatedpicup.hikari.connection-timeout=60000 #datasource.dedicatedpicup.hikari.maximum-pool-size=5
添加 sqljdbc4 依赖项。
com.microsoft.sqlserver sqljdbc4 4.0添加 Tomcatjdbc 依赖。
org.apache.tomcat tomcat-jdbc从 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位。