Mac下Java JNI (java native interface)调C

1.编写带有native声明的方法的Java类

2.使用javac命令编译编写的Java类

3.使用java -jni className 来生成后缀名为.h的头文件

4.使用其他语言(C、C++)实现本地方法

5.将本地方法编写的文件生成动态链接库

一代码:(不要带包路径)

/** * native-0study * * @author xuedui.zhao * @create 2018-04-23 */public class HelloWorld {    public native void hello();

static{        System.loadLibrary("hello");    }

public static void main(String[] args){

new HelloWorld().hello();    }}

二:

在终端执行 : javac HelloWorld.java

这时会生成HelloWorld.class 文件

三:使用java -jni className 生成后缀名为.h的头文件

/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class HelloWorld */

#ifndef _Included_HelloWorld#define _Included_HelloWorld#ifdef __cplusplusextern "C" {#endif/* * Class:     HelloWorld * Method:    hello * Signature: ()V */JNIEXPORT void JNICALL Java_HelloWorld_hello  (JNIEnv *, jobject);

#ifdef __cplusplus}#endif#endif

四:创建 HelloWorldImpl.c 文件

#include "jni.h"#include "HelloWorld.h"#include <stdio.h>JNIEXPORT void JNICALL Java_HelloWorld_hello(JNIEnv *env,jobject obj){  printf("Hello World!\n");  return;}

五:将本地方法编写的文件生成动态链接库

gcc -dynamiclib -I /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/include HelloWorldImpl.c -o libhello.jnilib
此时会抛出异常:

HelloWorldImpl.c:1:10: fatal error: ‘jni.h‘ file not found
#include "jni.h"
^~~~~~~
1 error generated.

六:sudo cp /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/include/darwin/jni_md.h /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/include

七:ls -al

drwxr-xr-x 7 xuedui.zhao staff 224 4 23 21:35 .

     drwxr-xr-x 9 xuedui.zhao staff 288 4 23 11:52 ..

     -rw-r--r-- 1 xuedui.zhao staff 442 4 23 14:07 HelloWorld.class
     -rw-r--r-- 1 xuedui.zhao staff 377 4 23 14:07 HelloWorld.h
     -rw-r--r-- 1 xuedui.zhao staff 276 4 23 14:06 HelloWorld.java
    -rw-r--r-- 1 xuedui.zhao staff 170 4 23 21:27 HelloWorldImpl.c
    -rwxr-xr-x 1 xuedui.zhao staff 8400 4 23 21:35 libhello.jnilib

八:终端执行 : java HelloWorld

     Hello World!

原文地址:https://www.cnblogs.com/snowHorse/p/8921995.html

时间: 2024-11-06 06:47:51

Mac下Java JNI (java native interface)调C的相关文章

Mac 下 Terminal 中 Java乱码的解决方法

在 .bash_profile 中增加一行 export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 就可以了. Mac 下 Terminal 中 Java乱码的解决方法,布布扣,bubuko.com

mac下安装配置java开发环境

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Helvetica; color: #000000; min-height: 13.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #

ubuntu下使用JNI Java调用C++的例子

TestJNI.java 1 public class TestJNI { 2 3 static{ 4 System.load("/home/buyizhiyou/workspace/JNI/src/libTestJNI.so");//注意此处加载.so文件 5 } 6 public native String test(String inp);//此处需要声明 7 8 public static void main(String[] args){ 9 TestJNI j=new Te

mac下使用RabbitMQ(Java语言)

操作系统为OS X Yosemite 10.10.3 ? 1.下载安装 在官网http://www.rabbitmq.com/download.html下载RabbitMQ Server,这个页面右侧有导航,可以找到Install: Mac OS X链接,或者页面中的Installation Guides项目下可以找到Mac OS X:?Standalone下载地址,现在最新版本为rabbitmq-server-mac-standalone-3.6.0.tar.xz,下载解压这个文件. ? 2.

mac下安装配置java jdk,maven,resin

mac jdk安装及环境变量配置 安装http://www.ifunmac.com/2013/04/mac-jdk-7/ jdk安装目录:/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/ 环境变量:http://hdu104.com/23 maven的安装与配置 http://www.cnblogs.com/wanyakun/p/4171741.html 注意:配置完环境变量,即修改/etc/profile后需要重启

Mac下进行基于java服务端语言的微信公众号本地js-sdk调试的大致方法

开发微信公众号应用调用js-sdk,需要先在微信公众号后台配置可信域名,之后从微信的入口地址重定向到改域名下的路径后便会返回code,之后可以拿到一系列需要的参数等等.那么本地开发,如果使用的是PHP语言,在本地hosts文件添加一条记录,默认80端口,即可在本地使用微信开发者调试工具进行微信公众号应用的开发调试,但如果使用的java语言,默认8080端口,如果设置为80端口启动,非root权限下tomcat是启动不成功的,如果以root权限启动tomcat或者eclipse又会造成其他一些问题

Java JVM、JNI、Native Function Interface、Create New Process Native Function API Analysis

目录 1. JAVA JVM 2. Java JNI: Java Native Interface 3. Java Create New Process Native Function API Analysis In Linux 4. Java Create New Process Native Function API Analysis In Windows 1. JAVA JVM 0x1: JVM架构简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种

Mac 下 java环境 maven环境配置

在mac下配置了java环境和maven环境,发现网上的配置方法各有不同,尝试了各种,现在记录下我配置后总结的方法 java环境配置 1. 下载jdk,按照提示安装 我下的是1.8.0版本,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.查看安装的 JDK 以及路径 命令行终端输入 : /usr/libexec/java_home -V //查看安装的 JDK 以

JNI(Java Native Interface)_02

JNI(Java Native Interface)_02 ndk开发常用术语 观察jni.h文件的c语言细节: 交叉编译 在一种平台下编译出能够在另外一种平台下运行二进制代码 平台(1,操作系统:windows linux mac os solaris 2,cpu x86 arm mips) 交叉编译原理 源代码--->编译---->动态库(.dll,.so)-->目标平台运行 windows 源代码编译成 linux,arm下的可执行文件 ndk开发工具 ndk (native de