Java笔记-Java通过JNI调用Linux上so文件
目录
基本概念
代码与实例
基本概念
流程就是下面这个图:
代码与实例
这里以Linux上的so文件为例。
创建好HelloWorld.java后,通过:
javac HelloWorld.java
编译为class文件。
再通过:
javah -jni HelloWorld
让其生成本地方法头文件HelloWorld.h。
自己再创建一个HelloWorld.cpp,把HelloWorld.h中的函数定义一下;
具体文件如下:
具体内容如下:
HelloWorld.java
class HelloWorld{private native void print();public static void main(String[] args){new HelloWorld().print();}static{System.loadLibrary("HelloWorld");}
}
HelloWorld.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/** Class: HelloWorld* Method: print* Signature: ()V*/
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif
HellWorld.c
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj){printf("Hello world, hehehe!\n");
}
随后把CPP文件编译为so文件:
gcc -I/usr/lib/jvm/java-7-openjdk-amd64/include -I/usr/lib/jvm/java-7-openjdk-amd64/include/solaris -fPIC -shared -o libHelloWorld.so HelloWorld.c
截图如下:
-f后面跟一些编译选项,PIC是其中一种,表示生成位置无关代码(Position Independent Code)
跑一下看看能不能成功:
Java笔记-Java通过JNI调用Linux上so文件相关推荐
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
- linux java读取文件夹下文件名,Java获取Linux上指定文件夹下所有第一级子文件夹...
说明:需要只获得第一级文件夹目录 package com.sunsheen.jfids.studio.monitor.utils; import java.io.BufferedReader; imp ...
- SpringBoot部署项目到Linux上传文件路径问题
SpringBoot部署项目到Linux上传文件路径问题 使用项目相对路径上传到话会上传到linux服务器到/tmp 临时文件目录中,但是问题是还会报异常 Caused by: java.io.Fil ...
- window文件转换到linux,Window和Linux上的文件相互转换
当前位置:我的异常网» Linux/Unix » Window和Linux上的文件相互转换 Window和Linux上的文件相互转换 www.myexceptions.net 网友分享于:2013- ...
- linux文件描述符有什么用,linux上的文件描述符3有什么特别之处?
我的工作,那将在Linux和Mac OS X上运行的服务器应用程序它是这样的:linux上的文件描述符3有什么特别之处? 启动主要应用 控制器进程的叉 调用lock_down()在控制过程中 再次叉终 ...
- echo添加换行 linux_在 Linux 上创建文件的 10 个方法
我下面将会介绍多个在 Linux 上创建文件的方法.我建议你选择几个简单高效的来辅助你的工作. -- Vinoth Kumar 我们都知道,在 Linux 上,包括设备在内的一切都是文件.Linux ...
- 合并和排序 Linux 上的文件
在 Linux 上合并和排序文本的方法有很多种,但如何去处理它取决于你试图做什么:你是只想将多个文件的内容放入一个文件中,还是以某种方式组织它,让它更易于使用.在本文中,我们将查看一些用于排序和合并文 ...
- Linux上的文件类型与默认图标
引言 也许小伙伴们对 Linux 已经有一定程度的了解,或者已经是一名能够在工作和生活中活用它的 Linux 用户了.随着桌面环境的不断发展,Linux 系统已经不再仅仅是一个面向极客和开发者的操作系 ...
- linux文件夹加密忘记密码,如何通过密码保护Linux上的文件夹或目录?
假设你在Linux主目录下有一个文件夹,你把不希望任何人没有密码就能访问的安全文档文件存储在里面.那样一来,即使有人设法搞到了你的计算机,进而访问主目录,仍有另外一道防线守护着你的私密文件. Cryp ...
最新文章
- Mybatis 中$与#的区别
- signature=7af2859164902e5f86d6728522cfd7fe,Signatures of top flavored dark matter
- NTA告警引发的dll劫持思考(溯源)
- GitHub无法push的问题
- Linux工具篇 | Ubuntu安装balenaEtcher镜像刻录工具
- Excel数据分析和建模
- 1111,你的能量够买包卫生巾吗?
- labview的信号发生器演示实例
- JavaScript数组some方法
- Microsoft HTML Help Workshop 使用
- 微信小程序--引用第三方组件
- Delphi变成小技巧——直接将excel当做表来显示
- 简易的抽奖系统(二)
- C++读取Wav文件
- 软件外包的五点管理技巧
- 上海移动网红套餐来袭,大流量融合套餐200兆宽带起免费用!
- 解决SiamRPN预训练模型的问题
- 无线网性能该如何测试
- [统计]_通俗地讲一类错误和二类错误
- JS获取网页 < 变成 /u003C