Я пытаюсь создать веб-интерфейс для встроенного устройства, которое будет отображать статистику сети.Я использую сервер приложений Glassfish 3.1 и хотел бы использовать jnetpcap для прослушивания сетевого трафика.jnetpcap опирается на собственные библиотеки libpcap.Я пытался найти документацию от Oracle об использовании нативных библиотек со Glassfish, но я еще не нашел того, что искал (и, возможно, я искал не то).
Когда мой сервлет загружается, происходит сбой с
. Причина: java.lang.NoClassDefFoundError: Не удалось инициализировать класс org.jnetpcap.Pcap
, который, как я понимаю, означает, чтозагрузчик классов может найти класс (я определил его как библиотеку при развертывании), но не могу загрузить его.Мои первые выводы заключались в том, что это могло быть проблемой политики безопасности или что jvm не смог найти libpcap.so.
Я установил путь для system.library.path в консоли администратора (т. Е. В веб-интерфейсе), используя Configurations-> server-config-> jvm-settings.На вкладке «Параметры пути» я поместил путь «/usr/bin/libpcap.so» в поле «Суффикс пути к собственной библиотеке».Когда я перезапустил сервер Glassfish, я получил следующее сообщение:
[# | 2011-03-31T13: 30: 13.962 + 1100 | ПРЕДУПРЕЖДЕНИЕ | glassfish3.1 | null |... GlassFishConfigBean.com.sun.enterprise.config.serverbeans.JavaConfig}, причина = атрибут JavaConfig 'NativeLibraryPathSuffix' был изменен с 'null' на '/usr/bin/libpcap.so', когда = 1301538613961 | #]
и позже в журналах путь к собственной библиотеке обнаруживается в пути вывода
-Djava.library.path = ... / usr / lib64: / lib64: / lib: / usr /lib: /usr/bin/libpcap.so
, поэтому я думаю, что нативная библиотека успешно загружается.Есть ли способ проверить, действительно ли загружена нативная библиотека?
Я также отключил диспетчер безопасности (на данный момент, чтобы попытаться заставить сервлет работать; я планирую реализовать более тонкиеполитики безопасности, как только она заработает), и это также не устранило проблему.
Правильно ли я загружаю нативную библиотеку?Как узнать больше информации о том, загружена ли нативная библиотека и почему класс org.jnetpcap.Pcap не может быть инициализирован?
Спасибо, Тим