IntelliJ, JInput и java.library.path

Я работаю над java-проектом, который использует как Jogl, так и JInput, и я работаю в IntelliJ. У меня проблемы с тем, что приложение не может найти различные библиотеки DLL. Я знаю, что рекомендуемый способ - извлечь библиотеки DLL в папку, а затем указать java.library.path в этой папке. Есть ли способ как-то включить эти библиотеки в конфигурацию проекта? Я беру эти файлы из jCenter, и я бы предпочел просто указать файлы jar и позволить JNA делать свою работу.

Какую версию JOGL вы используете? Сам JOGL не использует JNA, он использует GlueGen (который полагается на JNI). Я советую вам использовать jogamp-fat.jar, если вам действительно нужно очень простое решение (несмотря на некоторые ограничения). Если вы находитесь в очень ограниченной среде, я боюсь, что вам придется использовать java.library.path и отключить автоматическую загрузку собственной библиотеки (см. Руководство пользователя JOGL).

gouessej 28.03.2018 10:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
494
1

Ответы 1

Я использую этот метод ниже для динамической установки пути непосредственно перед тем, как DLL понадобится какому-либо объекту. Он называется следующим образом:

setDllLibraryPath("C:/yourPathToDLLs")

Метод установки пути к библиотеке

public static void setDllLibraryPath(String resourceStr) {
    try {
        System.setProperty("java.library.path", resourceStr);

        Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
        fieldSysPath.setAccessible(true);
        fieldSysPath.set(null, null);//next time path is accessed, the new path will be imported
    } catch (Exception ex) {
        ex.printStackTrace();
        throw new RuntimeException(ex);
    }
}

Другие вопросы по теме