2011-11-29 25 views
1

我想使用JNI與使用JNI的Servlet,但我似乎有一些問題。如何在Servlet中使用JNI?

我遵從位於「\ WebRoot \ WEB-INF \ classes」的.class文件,因爲我無法遵守.java文件,因爲它說我缺少明顯位於文件頂部的導入文件。我相信它不能正確執行,因爲沒有主函數,但據我所知,可以將JNI與Servlet結合使用。

無論如何,我可以從那個.class文件中獲得.h文件,並且能夠使用.h完美編寫我的C代碼並製作一個.DLL我把這個DLL放在「\ WebRoot \ WEB -INF \ classes「,並在」\ WebRoot \ WEB-INF \ lib「中嘗試過它,但無法在java.library.path中使用無庫函數。

有幫助嗎?

+1

我猜想有關缺少導入的消息與您在編譯時使用的類路徑相關,而不是您的.java文件頂部的語句。 – DaveH

+0

我仍然可以使用在「\ WebRoot \ WEB-INF \ classes」中生成的.class文件嗎?使用我能夠遵守的。問題是,當我嘗試在啓動部署後訪問servlet時,出現了我注意到的最後一個錯誤。 – riahc3

回答

2

JNI依賴關係在運行時解析,而不是在編譯期間解決。如果你的.java文件不能編譯,那麼你的Java類確實有問題。 是的,確實可以將JNI與servlet一起使用,您可以在初始化階段(init方法)加載本地庫。您還將您的DLL文件放入WEB-INF \ classes中,並將其放入其中。然後,根據錯誤消息,您可以確定該DLL,其依賴項或導入函數是否有問題。

+0

當我嘗試運行部署時,它確實啓動了它並創建了一個.class文件。我無法遵守它使用「javac」的命令行。那麼,爲什麼我的IDE可以遵守它,而我無法手動? – riahc3

+0

你從命令行得到的錯誤是什麼?你可以發佈嗎? – belgther