android ubuntu jni so 报错Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI

简介: 关键在于:hello-jni.c hello-jni.c文件内容如下: #include #include jstring Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI(J...

关键在于:hello-jni.c

hello-jni.c文件内容如下:

#include <string.h>

#include <jni.h>

jstring Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI(JNIEnv* env,jobject thiz )

{

   return (*env)->NewStringUTF(env,"Hello from NDK JNI !");

}


要注意Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI这段语句的意思。

在你的so库里面定义的方法需要跟你java工程中的包类名一致才行的。
例如你在so库中定义的native方法为:
Java_com_example_test_hellojni_HelloJni_stringFromJNI( JNIEnv*env,jobject thiz )
则你需要定义一个HelloJni的类,包名为com.example.test.hellojni,然后在HelloJni类中定义native方法tringFromJNI。这样都会找到相应的函数。

也就是说:比如如果是这样的xxx_xxx_xxx_stringFromJNI()
那么你的JAVA工程里,应该有xxx_xxx这个Packeage,Packeage中有xxx这个类,类中调用。


然后打开命令行,这么搞一下:

root@hjm-H61M-DS2:~/workspace/HelloNDKJNI# $NDK/ndk-build
Compile thumb 
: hello-ndk-jni <=hello-jni.c
SharedLibrary 
: libhello-ndk-jni.so
Install 
      : libhello-ndk-jni.so =>libs/armeabi/libhello-ndk-jni.so


$NDK这个命令因人而异,要看在.basrch当中的环境变量设计,可以看我的前几篇当中,有介绍。


然后在项目中会多出两个文件夹。不用去管它。


最后在

   static{

           System.loadLibrary("libhello-ndk-jni");

   }

这里确定包的名称,就可以了。

目录
相关文章
|
5月前
|
Android开发
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
339 4
复杂项目即时通讯从android 5升级android x后遗症之解决报错#79 java.io.EOFException Unexpected end of ZLIB input stream-优雅草卓伊凡|bigniu
|
4月前
|
Java API 开发工具
【Azure Developer】Java代码实现获取Azure 资源的指标数据却报错 "invalid time interval input"
在使用 Java 调用虚拟机 API 获取指标数据时,因本地时区设置非 UTC,导致时间格式解析错误。解决方法是在代码中手动指定时区为 UTC,使用 `ZoneOffset.ofHours(0)` 并结合 `withOffsetSameInstant` 方法进行时区转换,从而避免因时区差异引发的时间格式问题。
259 3
|
3月前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
104 6
java调用服务报错400
|
3月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
235 6
|
8月前
|
Ubuntu Windows
处理ubuntu启动过程中报错error:proc_thermal_add错误的方法
了解以上方法,就像寻找鬼屋出口的吊灯,当初见“error:proc_thermal_add错误”时的恐惧不翼而飞。各位Ubuntu使用者都是勇敢的探险家,遇到的问题无非是丛林中的野兽,尝试、努力和坚持总能找到解决的办法。
226 21
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
2858 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
10月前
|
运维 Cloud Native Java
postman发起post请求遇到报错:java.io.FileNotFoundException (文件名、目录名或卷标语法不正确。)
遇到bug报错,多猜可能的原因,控制变量反复测试,直至找到问题的关键,然后再思考如何解决或者回避。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来
|
Java Windows
【Azure Function】部署Java Function失败:报错deploy [ERROR] Status code 401和警告 'China North 3' may not be a valid region
1:deploy [ERROR] Status code 401, (empty body). 2: China North 3 may not be a valid region,please refer to https://aka.ms/maven_function_configuration#supported-regions for values. 3:  <azure.functions.maven.plugin.version>1.36.0</azure.functions.maven.plugin.version>
214 11
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
1366 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.