Связывание собственного dll с банкой [дубликат]

Visual Studio также имеет функцию, которая генерирует Свойство от частной переменной.

, Если Вы щелкаете правой кнопкой по переменной в контекстном меню, которое открывается, нажимают на "Осуществлять рефакторинг" объект. Тогда выберите, инкапсулируют поле. Это создаст свойство метода get/метода set для переменной.

я не слишком крупный поклонник этой техники, поскольку это немного неудобно использовать, если необходимо создать много методов get/методов set, и это помещает свойство непосредственно ниже частного поля, которое прослушивает меня, потому что у меня обычно есть все мои частные поля, группировавшиеся, и эта функция Visual Studio повреждает форматирование моего класса.

11
задан Community 23 May 2017 в 10:33
поделиться

3 ответа

Иногда я обнаруживал, что проблема заключается не в том, как Java загружает собственные библиотеки, а в сторонней библиотеке, которой нужен этот собственный код.

Проблема в том, что сторонние библиотеки будут работать в какой-то момент (обычно на очень ранней стадии инициализации)

System.loadLibrary("native.dll"); 

И если native.dll находится не в подходящем месте, он выдает ошибку.

Если у вас есть доступ к исходный код java сторонней библиотеки, может быть легко исправить этот код, и вы можете легко извлечь свою dll из JAR и запустить System.load перед использованием сторонней библиотеки.

Обновление Я заглянул в источники JNotify. Это именно то, что я сказал:

public class JNotify_win32
{
    static
    {
        System.loadLibrary("jnotify"); /* *** */
        int res = nativeInit();
        if (res != 0)
        {
            throw new RuntimeException("Error initialiing native library. (#" + res + ")");
        }
    }

Выньте строку *** или окружите try-catch, загрузите с помощью System.load (), и все готово.

6
ответ дан 3 December 2019 в 08:04
поделиться

Я не думаю, что исполняемый файл Java поддерживает Bundle-NativeCode . Я почти уверен, что это атрибут OSGi . Список поддерживаемых атрибутов определен в Спецификации файла JAR .

За пределами структур, которые его предоставляют, нет встроенной поддержки для объединения собственных библиотек в файлы JAR. Если я правильно помню, можно извлечь файл во временное место и загрузить его вручную.

6
ответ дан 3 December 2019 в 08:04
поделиться

Я столкнулся с этой проблемой при попытке перехватить событие завершения работы Windows, когда программа работает в этой ОС. Решение, которое я в итоге использовал, было, по сути, решением Макдауэлла: добавление библиотеки DLL в файл jar и извлечение ее во временное место при запуске программы. Если он подходит для вашей программы, вы можете оставить DLL на более постоянном месте, а затем ссылаться на нее при последующих запусках программы. Мое приложение использовалось в среде, где пользователи могли намеренно удалять файлы, которые им не следовало делать, поэтому мне приходилось извлекать DLL при каждом запуске. Однако это не привело к значительному снижению производительности.

3
ответ дан 3 December 2019 в 08:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: