Ich habe es mit einigen Methoden versucht, aber die Bibliothek wird immer noch nicht richtig geladen.
Schließlich habe ich festgestellt, dass es eine private statische Aufladung gibt letzte Variable namens JAVA_LIBRARY_PATH. Daher kann ich das nicht ändern, da es sich um eine endgültige Variable handelt.
Ich habe die folgende Implementierung bereits ausprobiert.
Code: Select all
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);
}
}
zu überprüfen, ob die Bibliothek erfolgreich geladen wurde
Code: Select all
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());
}
}
Code: Select all
System.out.println("java.library.path: " + libraryPath);
Ist das schon jemandem passiert oder hat jemand eine Idee, damit umzugehen?