Używany przeze mnie słoik próbuje załadować natywną bibliotekę przy użyciu System.loadLibrary. Myślę, że dzieje się tak, że jedna z ładowanych bibliotek ma zależność od innej natywnej biblioteki. Wskazywanie opcji -Djava.library.path w tym przypadku nie działa poprawnie. Instrukcje ze strony aplikacji są umieszczane w katalogu jre/bin, ale myślę, że jest to bardzo zły pomysł (szczególnie przy próbie wdrożenia na stronach klienta).Java System.loadLibrary dependencies
Tak, to naprawdę jest 2 części.
Czy ma sens, że jeśli rodzime lib próbuje załadować kolejną rodzimą lib że -Djava.library.path nie działa?
Czy istnieje dobre rozwiązanie w celu obejścia tego problemu? Chyba mógłbym jawnie wywołać System.loadLibrary na wszystkich bibliotekach dll (nie jestem nawet pewien, czy to zadziała), ale musiałbym się upewnić, aby wywołać je w poprawnej kolejności, w przeciwnym razie będę miał ten sam problem.
EDIT: Myślę, że to ma sens, że to się dzieje, a najlepszym rozwiązaniem, jakie do tej pory przeczytać jest użycie Dependency Walker, aby zrozumieć to, a następnie załadować je w odwrotnej kolejności ... ale jestem otwarty na propozycje lepszych ...
dzięki, Jeff
Próbowałem ładować w kolejności odwrotnej, i to działa, więc może wykorzystam to podejście, chyba że jest jakieś magiczne rozwiązanie, którego mi brakuje. –
To pewnie też bym zrobił, poza możliwością zgłoszenia usterki osobie trzeciej. Jeśli korzystasz z oprogramowania wieloplatformowego, dynamicznie powiązane biblioteki mogą się różnić między platformami. Powodzenia! –