簡體   English   中英

在Maven項目中將dll放在哪里

[英]Where to place dll in Maven project

我已經下載了要在Eclipse Maven Java項目中使用的sql jdbc驅動程序。 我應該在哪里放置sqljdbc_auth.dll文件,以便可以在Eclipse IDE中運行項目。 那我該告訴Maven嗎?

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會將其放置在目標jar的根目錄中。

您可以將dll文件放置在文件系統上的任何位置。 您只需要確保JVM知道它們的路徑即可。

為了讓JVM知道如何加載dll,必須使用磁盤上dll的路徑更新java.library.path變量。

在Eclipse中,您可以通過修改eclipse安裝的根文件夾中的eclipse.ini文件來執行此操作,也可以在“ Arguments”選項卡->“ VM arguments”中針對每個運行配置執行此操作。

這是需要添加的行:

-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>
.....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM