Как я могу Ява Webstart несколько, в зависимости, родной библиотеки?

голоса
15

Пример: У меня есть две общие объекты (такие же, должны применяться к .dlls). Первый общий объект из библиотеки третьей стороны, мы будем называть его libA.so. Я завернуты некоторые это с JNI и создал свою собственную библиотеку, libB.so. Теперь libB зависит от Либа.

Когда webstarting обе библиотека место в некоторой рабочей области Webstart. Мой Java код пытается загрузить libB. На данный момент системы загрузчик попытается загрузить Либ, который не находится в пути системной библиотеки (java.library.path не поможет это). Конечный результат является то, что libB имеет неудовлетворенную ссылку и не может быть использован.

Я попытался загрузки Lība до того libB, но до сих пор не работает. Кажется, что операционная система хочет сделать что загрузка для меня. Есть ли способ, что я могу сделать эту работу, кроме статический компиляций?

Задан 07/08/2008 в 13:26
источник пользователем
На других языках...                            


3 ответов

голоса
6

Я не уверен, если это будет обрабатываться точно так же, как для WebStart, но мы столкнулись с этой ситуацией в настольном приложении при работе с набором собственных библиотек (DLL в нашем случае).

Загрузка Lība Перед libB должна работать, если одна из этих библиотек не имеет зависимость, которая неучтенное и не в пути. Я понимаю, что, как только он попадает в систему LoadLibrary вызова (т.е. Java нашел библиотеку в своем java.library.path и теперь говорит OS, чтобы загрузить его) - это полностью зависит от операционной системы, чтобы найти какие-либо зависимые библиотеки , потому что на тот момент это операционная система, которая загружается библиотека для процесса, и ОС знает, как искать в системном пути. Это, кажется, трудно установить в случае приложения Webstart, но есть способ обойти это, что не включает в себя статическую компиляцию. Вы можете быть в состоянии перетасовать, где ваши библиотеки - я не уверен,

Если вы используете специальный загрузчик классов, вы можете переопределить LoadLibrary и findLibrary так, что он может найти свои библиотеки из в банке в вашем пути к классам, и если вы также сделать это в курсе ваших родных зависимостей библиотеки (т.е. libB зависит от Либа зависит от libX, то при загрузке libB вы можете поймать себя и убедиться, что вы загрузите Lība первый, и в проверке того, что уведомление и загрузить libX первый. Тогда ОС не пытается найти библиотеку, которая не находится в вашем пути. Это klunky и немного больно , но обеспечение Java находит их и загружает их в правильном порядке, может работать.

Ответил 07/08/2008 d 18:53
источник пользователем

голоса
3

Статическая компиляция оказалась единственным способом Webstart несколько зависимых собственных библиотек.

Ответил 26/01/2009 d 02:47
источник пользователем

голоса
1

Существуют как нативные библиотеки , упакованные в подписанном банку , который занесен в список

<nativelib ...> 

В файле JNLP?

Ответил 17/09/2008 d 07:32
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more