目录

基本概念

代码与实例


基本概念

流程就是下面这个图:

代码与实例

这里以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文件相关推荐

  1. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  2. linux java读取文件夹下文件名,Java获取Linux上指定文件夹下所有第一级子文件夹...

    说明:需要只获得第一级文件夹目录 package com.sunsheen.jfids.studio.monitor.utils; import java.io.BufferedReader; imp ...

  3. SpringBoot部署项目到Linux上传文件路径问题

    SpringBoot部署项目到Linux上传文件路径问题 使用项目相对路径上传到话会上传到linux服务器到/tmp 临时文件目录中,但是问题是还会报异常 Caused by: java.io.Fil ...

  4. window文件转换到linux,Window和Linux上的文件相互转换

    当前位置:我的异常网» Linux/Unix » Window和Linux上的文件相互转换 Window和Linux上的文件相互转换 www.myexceptions.net  网友分享于:2013- ...

  5. linux文件描述符有什么用,linux上的文件描述符3有什么特别之处?

    我的工作,那将在Linux和Mac OS X上运行的服务器应用程序它是这样的:linux上的文件描述符3有什么特别之处? 启动主要应用 控制器进程的叉 调用lock_down()在控制过程中 再次叉终 ...

  6. echo添加换行 linux_在 Linux 上创建文件的 10 个方法

    我下面将会介绍多个在 Linux 上创建文件的方法.我建议你选择几个简单高效的来辅助你的工作. -- Vinoth Kumar 我们都知道,在 Linux 上,包括设备在内的一切都是文件.Linux ...

  7. 合并和排序 Linux 上的文件

    在 Linux 上合并和排序文本的方法有很多种,但如何去处理它取决于你试图做什么:你是只想将多个文件的内容放入一个文件中,还是以某种方式组织它,让它更易于使用.在本文中,我们将查看一些用于排序和合并文 ...

  8. Linux上的文件类型与默认图标

    引言 也许小伙伴们对 Linux 已经有一定程度的了解,或者已经是一名能够在工作和生活中活用它的 Linux 用户了.随着桌面环境的不断发展,Linux 系统已经不再仅仅是一个面向极客和开发者的操作系 ...

  9. linux文件夹加密忘记密码,如何通过密码保护Linux上的文件夹或目录?

    假设你在Linux主目录下有一个文件夹,你把不希望任何人没有密码就能访问的安全文档文件存储在里面.那样一来,即使有人设法搞到了你的计算机,进而访问主目录,仍有另外一道防线守护着你的私密文件. Cryp ...

最新文章

  1. Mybatis 中$与#的区别
  2. signature=7af2859164902e5f86d6728522cfd7fe,Signatures of top flavored dark matter
  3. NTA告警引发的dll劫持思考(溯源)
  4. GitHub无法push的问题
  5. Linux工具篇 | Ubuntu安装balenaEtcher镜像刻录工具
  6. Excel数据分析和建模
  7. 1111,你的能量够买包卫生巾吗?
  8. labview的信号发生器演示实例
  9. JavaScript数组some方法
  10. Microsoft HTML Help Workshop 使用
  11. 微信小程序--引用第三方组件
  12. Delphi变成小技巧——直接将excel当做表来显示
  13. 简易的抽奖系统(二)
  14. C++读取Wav文件
  15. 软件外包的五点管理技巧
  16. 上海移动网红套餐来袭,大流量融合套餐200兆宽带起免费用!
  17. 解决SiamRPN预训练模型的问题
  18. 无线网性能该如何测试
  19. [统计]_通俗地讲一类错误和二类错误
  20. JS获取网页 < 变成 /u003C

热门文章

  1. PSP自制系统3.xxOE相关内容
  2. Asp.net1.0 升级 ASP.NET 2.0 的几个问题总结
  3. 努力学计算机四年,终于进腾讯了!
  4. 程序员进阶之路:四个程序员职业阶段,通常对应不同的薪资待遇!
  5. 脱离业务的技术架构,都只是一团废纸,教你从0-1建设业务架构
  6. 当涌泉相报局域网聊天
  7. 实话!程序员大都不喜欢拉帮结派
  8. feiq肆无忌惮欺压同行
  9. Symbian编程VC开发环境设置
  10. 历代CPU最全明细参数表