當前位置:編程學習大全網 - 網站源碼 - servlet用jni調用C++和其他java調用c++有什麽不同麽?

servlet用jni調用C++和其他java調用c++有什麽不同麽?

沒有什麽不同,java加載動態庫有兩個方法System.load和System.loadLibrary,這兩個方法使用起來不壹樣。假設庫文件在這個地方:/xxx/xxx/libNativeClass.jnilib(mac後綴名是jnilib或者dylib,Linux後綴名是so)。

1.妳使用System.load方法加載的話,將動態庫文件放在src目錄下,使用如下方式:

String?jniName?=?this.getClass().getClassLoader().getResource("libNativeClass.jnilib").getPath();

System.load(jniName);

NativeClass?nativeClass?=?new?NativeClass();

nativeClass.nativeMethod("妳好hello?world");

2.如果妳使用System.loadLibrary方式加載,最簡單的方法就是將動態庫文件放到tomcat的bin目錄下,然後使用System.loadLibrary("NativeClass"),註意NativeClass指的是library path下的libNativeClass.jnilib文件,Linux和mac會自動加前綴lib和後綴so或jnilib,windows好像有點兒不壹樣

3.給妳截個圖,我測試的代碼:

註意:妳必須使用NativeClass生成cpp文件時的包路徑,即妳生成cpp時NativeClass的全類名是com.java.natives.NativeClass,那麽妳運行該類的本地方法nativeMethod時,也必須保證NativeClass類的全類名是com.java.natives.NativeClass,前後不壹樣會報錯,這是我測試的時候遇到的問題

  • 上一篇:怎樣突破網吧限制下載本地服務器中的電影? 網頁編程
  • 下一篇:#武漢微品致遠信息科技有限公司#其實就是壹家培訓機構,浪費我時間大老遠跑過去面試,說壹大堆就是要妳
  • copyright 2024編程學習大全網