日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

java jni ubuntu 环境搭建时遇到的坑

發(fā)布時間:2023/12/9 Ubuntu 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jni ubuntu 环境搭建时遇到的坑 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1:版本不一致遇到的坑

javah的版本需要同javac的版本一致。如果版本的問題搞不定,直接用andorid? source build之后的環(huán)境即可

2:javah使用遇到的坑

jni中字段描述符可以使用javah生成

javah -jni -classpath . JNIdemo

其中 -classpath . 表示從當前目錄搜索class 如果不添加會爆出來各種不太相關的錯誤

3:執(zhí)行class時遇到的坑

如果執(zhí)行class時候,需要調用 so

僅僅直接執(zhí)行 java JNIdemo會報錯誤

Exception in thread "main" java.lang.UnsatisfiedLinkError: no native in java.library.path
?? ?at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
?? ?at java.lang.Runtime.loadLibrary0(Runtime.java:870)
?? ?at java.lang.System.loadLibrary(System.java:1124)
?? ?at JNIDemo.<clinit>(JNIDemo.java:4)

這時需要 exprort lD_LIBRARY_PATH=.?? 等號兩邊不要有空格。用來配置so的尋找路徑

4.java 靜態(tài)map c

直接使用javah來生成.h文件。在c中inlcude 該 .h即可。

當然也可以將java.h 去掉。把inlude 的內容都放到c文件中

如果大型工程中無法單獨compile,可以將需要map的函數(shù)單獨拿出來創(chuàng)建一個java文件。

5:編譯so文件的指令

gcc -I (jni.h的路徑)? -I(jvm.h的路徑) -fPIC -shared -o libnative.so native.c

eg:

?gcc -I /home/austinxin/work/SM8150-Android/android/prebuilts/jdk/jdk9/linux-x86/include -I /home/austinxin/work/SM8150-Android/android/prebuilts/jdk/jdk9/linux-x86/include/linux/ -shared -o libnative.so JNIDemo.c

eg:

gcc -I /usr/lib/jvm/java-1.11.0-openjdk-amd64/include/ -I /usr/lib/jvm/java-11-openjdk-am64/include/include/ -fPIC -shared -o libnative.so native.c

?

?

總結

以上是生活随笔為你收集整理的java jni ubuntu 环境搭建时遇到的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。