我已经下载SQL JDBC驱动程序,我想在我的Maven的Eclipse Java项目使用。我应该在哪里放置sqljdbc_auth.dll文件,以便我可以运行我在Eclipse IDE项目。我应该告诉行家呢?
UPD
我已经把sqljdbc_auth.dll
到src/main/resources
,但这没有帮助:
2019-02-01T15:06:02.138+0200 INFO user.dir=C:\projects\eclipse_workspace\RFIDGates
Feb 01, 2019 3:06:02 PM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
2019-02-01T15:06:16.927+0200 ERROR Get conn exception
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:68da04a3-d764-4c5d-a7ad-addd324db006
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2670) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:79) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3381) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:85) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3373) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7344) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2713) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2261) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1921) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1762) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1077) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:623) ~[mssql-jdbc-6.4.0.jre8.jar:?]
at java.sql.DriverManager.getConnection(DriverManager.java:664) ~[?:1.8.0_171]
at java.sql.DriverManager.getConnection(DriverManager.java:247) ~[?:1.8.0_171]
at com.kpv.rfid.db.ConnectMSSQLServer.main(ConnectMSSQLServer.java:270) [classes/:?]
Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) ~[?:1.8.0_171]
at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[?:1.8.0_171]
at java.lang.System.loadLibrary(System.java:1122) ~[?:1.8.0_171]
at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<clinit>(AuthenticationJNI.java:54) ~[mssql-jdbc-6.4.0.jre8.jar:?]
... 13 more
如果你已经有你的.dll文件只是将其存储在你的项目的src / main / resources目录和Maven将会把它的目标罐子的根目录。
您可以随时随地将您的dll文件的文件系统上。你只需要确保JVM知道的路径给他们。
对于JVM知道如何加载你的DLL,你必须更新与路径磁盘上的DLL的java.library.path
变量。
在Eclipse中你可以做,通过修改Eclipse安装的根文件夹中的文件eclipse.ini
,或者你可以为每个运行配置做到这一点,在“参数”选项卡 - >“VM参数”。
这是一个需要添加一行:
-Djava.library.path=<path-to-your-dll>
如果应用程序打包成一个可运行的JAR同样适用。在这种情况下,命令将是:
java -Djava.library.path=<path-to-your-dll> -jar myjar.jar
但是,你需要知道的事实,你的DLL也可能有依赖性,它们是由操作系统解决。从本质上讲,在你的系统PATH变量路径到您的DLL也将是一个不错的主意。
更新
在的eclipse.ini,这个属性需要-vmargs
行之后加入:
-vmargs
-Djava.library.path=<path-to-your-dll>
.....