沒有什麽不同,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,前後不壹樣會報錯,這是我測試的時候遇到的問題