Где разместить dll в проекте Maven - PullRequest
0 голосов
/ 01 февраля 2019

Я скачал драйвер sql jdbc, который хотел бы использовать в моем проекте Eclipse Maven Java.Где я должен разместить файл 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

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вы можете разместить свои dll файлы в любом месте файловой системы.Вам просто нужно убедиться, что JVM знает путь к ним.

Чтобы JVM знала, как загрузить вашу dll, вы должны обновить переменную java.library.path, указав путь к вашей dll на диске.

В Eclipse вы можете сделать это, изменив файл eclipse.ini в корневой папке вашей установки eclipse, или вы можете сделать это для каждой конфигурации запуска, на вкладке «Аргументы» -> «Аргументы VM».

Это строка, которую необходимо добавить:

-Djava.library.path=<path-to-your-dll>

То же самое применимо, если вы упаковываете свое приложение в качестве исполняемого фляги.В этом случае команда будет выглядеть следующим образом:

java -Djava.library.path=<path-to-your-dll> -jar myjar.jar

Однако вам необходимо знать о том, что ваша dll также может иметь зависимости, и они разрешаются операционной системой.По сути, было бы неплохо иметь путь к вашим dll также в системной переменной PATH.

Обновление

В eclipse.ini это свойство необходимо добавитьпосле строки -vmargs:

-vmargs
-Djava.library.path=<path-to-your-dll>
.....
0 голосов
/ 01 февраля 2019

Если у вас уже есть файл .dll, просто сохраните его в каталоге src / main / resources вашего проекта, и Maven поместит его в корневой каталог целевого jar-файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...