我正在嘗試爲嵌入式設備構建一個Web界面,該界面將顯示網絡統計信息。我正在使用Glassfish 3.1應用程序服務器,並且我想使用jnetpcap來監聽網絡流量。 jnetpcap依賴於libpcap本地庫。我試圖從Oracle中找到有關使用Glassfish的本地庫的文檔,但是我還沒有找到我正在尋找的東西(並且我可能正在尋找錯誤的東西)。如何使用Glassfish 3.1本機.so
當我的servlet加載失敗與
產生的原因:java.lang.NoClassDefFoundError:無法初始化類org.jnetpcap.Pcap
,我理解的意思,這個類加載器可以找到類(我在部署時將其指定爲庫)但無法加載它。我的第一個推論是它可能是一個安全策略問題,或者jvm找不到libpcap.so。
我使用Configurations-> server-config-> jvm-settings在管理控制檯(即Web界面)中設置system.library.path的路徑。在'路徑設置'選項卡中,我將路徑'/usr/bin/libpcap.so'放入本地庫路徑後綴字段中。當我重新啓動Glassfish服務器時,我收到以下消息:
[#| 2011-03-31T13:30:13.962 + 1100 |警告| glassfish3.1 | null | ... GlassFishConfigBean.com.sun.enterprise.config.serverbeans.JavaConfig},reason = JavaConfig屬性'NativeLibraryPathSuffix'已從'null'更改爲'/usr/bin/libpcap.so',when = 1301538613961 |#]
,後來在日誌中的機庫路徑輪番上漲的路徑輸出
-Djava.library.path = ...在/ usr/lib64下:/ lib64目錄:/ lib目錄:/ usr/lib中:在/ usr /bin/libpcap.so
所以我認爲本地庫正在成功加載。有沒有一種方法可以檢查本機庫是否真的被加載?我也已經禁用了安全管理器(就目前而言,試圖讓servlet工作;我計劃在其工作後實施更微妙的安全策略),但這也沒有解決問題。
我想正確加載本機庫嗎?我怎樣才能找到更多關於本地庫是否被加載的信息,以及爲什麼org.jnetpcap.Pcap類不能被初始化?
感謝, 添