2013-11-23 2 views
1

Я много искал в So. Но не удалось найти правильное решение. Вот проблемаБиблиотеки SO не загружаются при работе в качестве веб-приложения Java

У меня есть .so Файлы для загрузки в моем приложении для java.

Я создал класс Java с основным методом и загрузил его с помощью System.load();

System.load("/home/myfolder/TFS-SDK-11.0.0/redist/native/linux/x86_64/libnative_auth.so");   
System.load("/home/myfolder/TFS-SDK-11.0.0/redist/native/linux/x86_64/libnative_console.so");  

А затем мои коды Java. Когда я запускаю класс как приложение Java, он работает нормально.

Затем я добавил тот же код в своем веб-приложении Java. И я запускаю его в tomcat. Но отображается некоторая погрешность

Exception in thread "main" java.lang.UnsatisfiedLinkError 

Я обнаружил, что это происходит потому, что это не загрузка файлов библиотеки.

Когда я искал в google, я нашел несколько решений, но мне это не помогло. Я попытался добавить так подать расположение в

setenv.sh, catalina.sh в JAVA_OPTS. Но никто не работал.

Некоторые решения я даже не понимаю.

Может кто-то шаг за шагом предпосе из

Где поставить так файлы в котом? Какой файл мне нужно изменить и что добавить?

Я много искал. Но большинство ответов я не понимаю.

+1

Возможный дубликат [как сделать файл jar, содержащий файлы dll] (http://stackoverflow.com/questions/1611357/how-to-make-a-jar-file-that-include-dll-files) – chrylis

+0

@chrylis Я не хочу делать банку и все. Я хочу поместить этот файл SO в боковой tomcat (если необходимо) и загрузить файлы. Или в некоторых конфигурационных файлах в tomcat я должен иметь возможность указать расположение SO-файлов (я не знаю, какой конфигурационный файл). – iCode

ответ

0

При запуске приложения в веб-контейнере, таком как Tomcat, ваш основной метод НЕ будет вызываться.

Если вы хотите загрузить эти библиотеки при запуске контейнера, я бы предложил использовать ContextListener.

Попробуйте googleing «пример слушателя контекста в java» - вы получите множество хитов и множество примеров для подражания.

Возможно, вам также придется добавить эти библиотеки на свой путь к библиотеке Unix. Обычно это удобно делать в вашем сценарии запуска tomcat. Имя переменной пути к библиотеке зависит от unix-вкуса, поэтому я не могу сказать вам, что этот путь я боюсь.

+0

Сценарий запуска, который вы имели в виду 'startup.sh'? Я использую Ubuntu – iCode

+0

yes - startup.sh (или, возможно, catalina.sh). Это сценарий запуска для tomcat, а не сценарий запуска для всей установки unix – DaveH

Смежные вопросы