【Java基础知识】JNI入门
1、问题:javah or javac -h
在配置好java的环境变量后,java和javac都是可以用的,但是用javah就会出现问题。
会报错误
Unable to locate an executable at "/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/bin/javah" (-1)
后来就在网上搜了一下jdk-10.0.2发现,这个版本的jdk取消了javah,直接改用javac -h代替了
那我们就可以直接使用javac -h了
2、除了上面的问题,其余过程可参考:https://my.oschina.net/gschen/blog/1613890
总结过程:
(1)编写java文件,定义native方法,加载步骤4生成的jni动态链接库;
(2)javac编译java文件为class文件,javac HelloNative.java -h . 编译出c头文件,头文件里面声明了native方法;
(3)根据头文件,新建c文件,通过c语言实现native方法;
(4)使用gcc将c文件编译成动态链接库,jni文件:
gcc HelloNative.c -o libHelloNative.jnilib -dynamiclib -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include/ -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include/darwin/
(5)运行java程序:java HelloNative
最新文章
- AWS S3 CLI的权限bug
- 收藏的 500多个开源的Git源码
- COM技术の接口
- python中的md5加密
- Makefile简介
- 2013 Multi-University Training Contest 4 Who's Aunt Zhang
- mv、umask、chattr、lsattr命令
- winform 导出TXT 分类: WinForm 2014-05-15 15:29 128人阅读 评论(0) 收藏
- 【转】文件读写NDK(或Linux)
- Resizable(调整大小)组件
- SSD的基本架构
- sudo service memcached start
- php七牛批量删除空间内的所有文件方法
- Android 实战美女拼图游戏 你能坚持到第几关
- Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-2.xml, reason:
- overlay fs挂载及操作测试
- Laravel Blade 模板 @section/endsection 与 @section/show, @yield 的区别
- Maven内置属性,pom属性
- C中有关引用和指针的异同
- 泛型 Generic 类型擦除引起的问题及解决方法