Загрузка внешних собственных библиотек в JVM во время выполнения в Java 21JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Загрузка внешних собственных библиотек в JVM во время выполнения в Java 21

Сообщение Anonymous »

Я хочу загрузить внешнюю библиотеку (например:\Lic\64bit), которая содержит некоторые файлы DLL, в JVM во время выполнения. Невозможно также использовать Reflection и FFM (Java Foreign Function Memory API).
Я пробовал некоторыми способами, но все еще не загружал библиотеку должным образом.
Наконец я обнаружил, что существует частный статический последняя переменная с именем JAVA_LIBRARY_PATH. Так что я не могу изменить это, поскольку это конечная переменная.
Уже попробовал реализацию ниже.

Код: Выделить всё

private static void loadAllDLLs(String libraryPathToAdd) {
final String[] userPath = initializePath("java.library.path");
String ps = System.getProperty("path.separator");
//check if the path to add is already present
for (String path : userPath) {
if (path.equals(libraryPathToAdd)) {
return;
}
}

StringBuilder pathBuilder = new StringBuilder();
for (String pathToAdd : userPath) {
pathBuilder.append(pathToAdd).append(ps);
}
pathBuilder.append(libraryPathToAdd);

// Update java.library.path once with all paths
String finalPath = pathBuilder.toString();
System.setProperty("java.library.path", finalPath);

String[] newUserPath = initializePath("java.library.path");
for (String up : newUserPath) {
System.out.println("New User Path ----> " + up);
}
}
Но затем я попытался проверить, успешно ли загружена библиотека, с помощью

Код: Выделить всё

private static void loadLibraries() {
String libraryPath = System.getProperty("java.library.path");
System.out.println("java.library.path: " + libraryPath);

try {
System.loadLibrary("webcam-capture-driver-native-64");
System.out.println("Library loaded successfully.");
} catch (UnsatisfiedLinkError e) {
System.err.println("Failed to load library: " + e.getMessage());
}
}

Код: Выделить всё

System.out.println("java.library.path: " + libraryPath);
показывает, что библиотека, содержащая «webcam-capture-driver-native-64», добавлена ​​в свойство java.library.path. Но при загрузке библиотеки с помощью System.loadLibrary("webcam-capture-driver-native-64"); появляется исключение, поскольку не удалось найти библиотеку.
Кто-нибудь уже сталкивался с этим или есть идеи, как с этим справиться?

Подробнее здесь: https://stackoverflow.com/questions/793 ... in-java-21
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»