在哪里放置在DLL Maven项目

问题描述 投票:0回答:2

我已经下载SQL JDBC驱动程序,我想在我的Maven的Eclipse Java项目使用。我应该在哪里放置sqljdbc_auth.dll文件,以便我可以运行我在Eclipse IDE项目。我应该告诉行家呢?

UPD

我已经把sqljdbc_auth.dllsrc/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
java eclipse maven jdbc
2个回答
0
投票

如果你已经有你的.dll文件只是将其存储在你的项目的src / main / resources目录和Maven将会把它的目标罐子的根目录。


0
投票

您可以随时随地将您的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>
.....
© www.soinside.com 2019 - 2024. All rights reserved.