No sqljdbc_auth в java.library.path - программирование
Подтвердить что ты не робот

No sqljdbc_auth в java.library.path

У меня есть веб-приложение Java EE, которое подключается к экземпляру SQL Server 2008. У меня нет проблем с подключением и извлечением ко всем моим таблицам, за исключением одного из них. Ошибка в журнале Tomcat:

ПРЕДУПРЕЖДЕНИЕ: Не удалось загрузить причину sqljdbc_auth.dll: - no sqljdbc_auth в java.library.path

4b9b3361

Ответ 1

1) Загрузите Драйвер JDBC здесь.


2) разархивируйте файл и перейдите в sqljdbc_version\fra\auth\x86 или \x64
3) скопируйте sqljdbc_auth.dll в C:\Program Files\Java\jre_Version\bin
4) Наконец перезапустите eclipse

Ответ 2

Вот шаги, если вы хотите сделать это из Eclipse:

1) Создайте папку "sqlauth" на диске C: и скопируйте файл dll sqljdbc_auth.dll в папку

1) Перейти в Run> Run Configuration

2) Выберите вкладку " Аргументы " для вашего класса

3) Добавьте приведенный ниже код в аргументы VM:

-Djava.library.path="C:\\sqlauth"

4) Нажмите "Применить" и нажмите "Выполнить"

Не стесняйтесь попробовать другие методы.

Ответ 3

Ошибка ясна, не так ли?

Вы не добавили путь, где присутствует sqljdbc_auth.dll. Узнайте в системе, в которой находится DLL, и добавьте ее в свой путь к классам.

И если это также не сработает, добавьте папку, в которой находится DLL (я предполагаю \Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\enu\auth\x86) вашей переменной PATH.

Опять же, если вы проходите через ant или cmd, вы должны явно указать путь, используя -Djava.library.path = [путь к MS_SQL_AUTH_DLL]

Ответ 4

Для простого исправления выполните следующие действия:

Ответ 5

Я только что столкнулся с той же проблемой, но в моем собственном приложении. Мне не понравилось решение с копированием dll, так как это не очень удобно, поэтому я провел некоторое исследование и придумал следующее программное решение.

В принципе, перед выполнением любых подключений к SQL-серверу вам нужно добавить sqljdbc_auth.dll в путь.., что легко сказать:

PathHelper.appendToPath("C:\\sqljdbc_6.2\\enu\\auth\\x64");

как только вы это сделаете:

import java.lang.reflect.Field;

public class PathHelper {
    public static void appendToPath(String dir){

        String path = System.getProperty("java.library.path");
        path = dir + ";" + path;
        System.setProperty("java.library.path", path);

        try {

            final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
            sysPathsField.setAccessible(true);
            sysPathsField.set(null, null);

        }
        catch (Exception ex){
            throw new RuntimeException(ex);
        }

    }

}

Теперь аутентификация интеграции работает как шарм:).

Кредиты на fooobar.com/questions/74037/..., чтобы я мог понять это.

Ответ 6

Чтобы решить, я сделал следующее:

  1. Скопировал sqljdbc_auth.dll в sqljdbc_auth.dll: C:\Windows\System32
  2. Перезапустил мое приложение