LINUX.ORG.RU

[java] отваливается библиотека

 


0

0

Есть сервлет на жабе под GlassFish v3 в нем загружается библиотека при помощи System.loadLibrary(«xxx»); и прекрасно используется, но через пару недель выскакивает исключение java.lang.NoClassDefFoundError типа немогу найти библиотеку, при этом если в другом сервлете попытаться загрузить эту библиотеку то выскакивает исключение что она «already loaded in another classloader».

волшебные команды перезапуска GlassFish: /usr/share/glassfishv3/bin/asadmin stop-domain domain2 /usr/share/glassfishv3/bin/asadmin start-domain domain2 все лечат, но через пару недель оно опять умрет...

Вопрос можно ли это как то вылечить или это баг Java/GlassFish ? Может нужно не просто загрузить библиотеку но и как то ее зафиксировать (потипу того как память в linux можно уберечь от отправки в своп) ? Может есть волшебные заклинания для этого ? Копал долго но ничего похожего не нашел...


>The solution is to place your library into a CLASSPATH location which is accessible to the System classloader (e.g. jre/lib/ext) and then use the system classloader to actually load the class and use it:


пробовал?

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

>пробовал?
если бы CLASSPATH не был прописан оно бы не запускалось вообще, а оно запускается и работает неделю-две, а потом отваливается...

xtron
() автор топика
Ответ на: комментарий от xtron

нет, ты меня не так понял. Положи .so в указанную директорию и загрузи либу с помощью ClassLoader sysCL = getClass().getClassLoader().getSystemClassLoader(); этого класслоадера.

JFreeM ★★★☆
()

Библиотека на самом деле JMagick (Java bindings for ImageMagick).
Нашел вот такое решение:
http://geeklondon.com/blog/view/almost-too-obvious-tips

System.setProperty(«jmagick.systemclassloader», «no»);

после этого оно отказывается загружаться сразу...
обновил пакет - может это поможет посмотрим...

xtron
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.