Ich möchte eine Java-Implementierung basierend auf einer C++ - Bibliothek mithilfe von JNI erstellen. Wenn ich die Shared Library in Java verwenden möchte, kann sie leider nicht gefunden werden. Das Problem mit dieser gemeinsam genutzten Bibliothek ist, dass sie eine andere gemeinsam genutzte Bibliothek verbindet. Ich habe zwei verschiedene Fälle, in denen einer funktioniert (aber nicht verwendet werden sollte) und der andere nicht.Problem beim Laden freigegebener Bibliotheken in Java
Die Ana-Bibliothek muss immer statisch sein. Die Clara-Bibliothek muss immer geteilt werden. Es funktioniert, wenn die Bob-Lib statisch ist, aber es sollte geteilt werden und es sollte Ana und Clara enthalten.
Fall 1 (Works und kann in der richtigen java.library.path geladen werden).
sharedlibJava.so Links: staticlibAna.a staticlibBob.a sharedlibClara.so
Fall 2 (funktioniert nicht, weil es nicht einmal geladen werden kann, obwohl die java.library.path korrekt ist). sharedlibBob.so Links: staticlibAna.a und sharedlibClara.so (die grundlegende C++ Implementierung getestet und es funktioniert ohne Probleme)
sharedlibJava.so Links: sharedlibBob.so (die Java-Implementierung sollte mit dieser neuen Shared Library zur Verfügung).
Das Problem ist, dass wenn ich versuche, die Bibliothek zu laden, es nicht einmal in der richtigen java.library.path findet, obwohl es dort befindet.
Ich würde mich sehr über Feedback zu diesem Thema freuen.