java.lang.UnsatisfiedLinkError:java.library.path中没有sqljdbc_auth

我创建了一个java应用程序的.jar,当我尝试从cmd运行.jar时,我收到一个错误。

我一直在寻找并找到很多例子,但没有人为我工作。 我将java.library.path设置为目录’sqljdbc_auth.dll’,就像我在这里看到的那样但错误是连续的。

http://sofzh.miximages.com/java/8.png

我用命令运行我的java应用程序:java -Djava.library.path =“my dll path”并给出:

PS C:\Users\User> java -Djava.library.path="C:\Users\User\Desktop\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc _4.0\ptb\auth\x64" Error: Could not find or load main class .library.path=C:\Users\User\Desktop\Microsoft JDBC Driver 4.0 for SQL Server \sqljdbc_4.0\ptb\auth\x64 

我真的不知道如何解决这个问题。 我一直在寻找很多时间,但没有任何作用。 请有人帮帮我

谢谢

  WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrat ectionId:0481a2ee-4ac4-4fd3-89cd-58aad1696fe4 at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.j at com.microsoft.sqlserver.jdbc.AuthenticationJNI.(AuthenticationJNI.java:60) at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java: at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection. at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServe at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnect at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnecti at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java: at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.jav at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at test.database.Conection.getConexao(Conection.java:41) at test.forms.jTLogin.(jTLogin.java:71) at test.forms.jTLogin$4.run(jTLogin.java:448) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$400(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at com.microsoft.sqlserver.jdbc.AuthenticationJNI.(AuthenticationJNI.java:3 ... 28 more 

搞定了……

1)在Java / JDK / bin中添加了.dll和.jar

2)在applications / lib中添加了.jar

3)在windows / system32中添加了.dll

在“Path”系统环境中添加java / jdk ../ bin和windows / system32。

经过一整个沮丧的早晨,我终于开始工作,我需要做的只是@ user3320956第一个建议的一部分。

我将sqljdbc_auth.dll添加到我的JDK \ bin目录(在我的情况下是C:\ Program Files \ Java \ jdk1.7.0_79 \ bin)中,我的CLASSPATH中唯一的东西是

 C:\Program Files\Microsoft JDBC Driver 4.1 for SQL Server\sqljdbc_4.1\enu\sqljdbc41.jar 

之后,只要我没有使用-cp或-classpath变量,我就可以在我的类中使用此语句:

 import com.microsoft.sqlserver.jdbc.*; 

并连接到远程数据库。 这是我的连接字符串(当然,替换SERVERNAME和DBNAME,确保您拥有权限,确保您的服务器设置为接受TCP / IP连接等):

 jdbc:sqlserver://SERVERNAME;database=DBNAME;integratedSecurity=true;authenticationScheme=NativeAuthentication; 

HTH!

干杯,

-马修

如果您不需要“集成安全性”,可以使用url中的参数将其关闭:

 integratedSecurity=false; 

这应该适合开发,但也可能适用于某些生产环境。

我遇到与OP相同的问题,但我无法根据user3320956的响应进行解决。

我正在使用Intellij Idea,我发现我能够通过更改创建.jar的方法来解决这个问题。 “提取到目标JAR”方法是我以前使用的方法,并给了我OP描述的完全相同的问题。 我已经将此方法更改为“在创建Jar时尝试复制到输出目录并通过manifest链接”方法“我不再收到错误”错误:无法找到或加载主类“。

希望这有助于挽救陷入困境的人们一些头痛!