Un fichier JAR tiers que j'utilise tente de charger une bibliothèque native à l'aide de System.loadLibrary. Je pense que ce qui se passe est que l'une des bibliothèques en cours de chargement dépend d'une autre bibliothèque native. Pointage -Djava.library.path ne fonctionne pas correctement dans ce cas. Les instructions du site de l'application placent les dll dans le répertoire jre/bin, mais je pense que c'est une très mauvaise idée (surtout lorsque vous essayez de déployer sur des sites clients).Dépendances Java System.loadLibrary
Donc, cette question est vraiment 2 parties.
Est-il logique que si un essaie lib natif de charger une autre lib native -Djava.library.path ne fonctionne pas?
Existe-t-il une bonne solution pour contourner ce problème? Je suppose que je pourrais appeler explicitement System.loadLibrary sur toutes les DLLs (je ne suis même pas sûr que cela fonctionnerait), mais je devrais m'assurer de les appeler dans le bon ordre sinon j'aurais le même problème.
EDIT: Je pense que cela est logique que cela se produit, et la meilleure solution que je l'ai lu jusqu'à présent est d'utiliser marcheur de dépendance pour le comprendre et de les charger dans l'ordre inverse ... mais je « m ouvert à de meilleures suggestions ...
grâce, Jeff
J'ai essayé de charger dans le tri inverse, et cela fonctionne, donc peut-être que je vais utiliser cette approche, à moins qu'il y ait une solution magique qui me manque. –
C'est probablement ce que je ferais aussi, en plus de soumettre peut-être un défaut au tiers. Si vous utilisez un logiciel multiplateforme, les bibliothèques liées dynamiquement peuvent différer d'une plateforme à l'autre. Bonne chance! –