java native 接口开发流程
1.编写native接口
Hello.java
package com;
class Hello {
private native void print(); //定义native接口,,该方法为 对象内的,,所以执行慢
private static native int get();
private static native void set(int value);
public static void main(String[] args) {
new Hello().print(); //非静态
System.out.println("--------static return and parme----------");
System.out.println(get()); //静态
set(123);
System.out.println(get()); //静态
}
static {
System.loadLibrary("Hello");//加载 libHello.so
}
}
2.编译java源文件
在源文件目录执行 javac Hello.java
3.生成native头文件
在 classpath目录 执行命令 javah com.Hello;生成 com_Hello.h文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_Hello */
#ifndef _Included_com_Hello
#define _Included_com_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_Hello
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_Hello_print
(JNIEnv *, jobject);
/*
* Class: com_Hello
* Method: get
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_Hello_get
(JNIEnv *, jclass);
4.实现 .h文件
一个示例
#include <jni.h>
#include <stdio.h>
#include "com_Hello.h"
int i = 0;
JNIEXPORT void JNICALL Java_com_Hello_print(JNIEnv *env, jobject obj)
{
printf("Hello World!/n");
return;
}
JNIEXPORT jint JNICALL Java_com_Hello_get(JNIEnv *env, jclass jc)
{
return i;
}
JNIEXPORT void JNICALL Java_com_Hello_set(JNIEnv *env, jclass jc, jint j)
{
printf("set the value: sss");
i = j;
}
5.编译dll 或者so共享库
linux环境:.so文件 且命名为 libXXX.so
编译.o文件:gcc -fPIC -D_REENTRANT -I /usr/lib/jvm/java-1.7.0-openjdk.x86_64/include -I /usr/lib/jvm/java-1.7.0-openjdk.x86_64/include/linux -c com_Hello.c
链接.o文件 生成 so动态链接库:gcc -shared com_Hello.o -o libHello.so
window环境:.dll文件 xxx.dll
gcc -Wl,--add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o Hello.dll com_Hello.c
如果是c++程序 需要使用g++编译指令
6.添加到path
linux :export LD_LIBRARY_PATH=. 仅当前shell有效,可以添加到path
window:直接放在 jdk bin目录下
分享到:
相关推荐
JNI(Java Native Interface)是Sun Microsystems公司定义的一套标准接口,用于实现Java代码与本地代码(通常是C或C++)之间的交互。随着Java的发展,JNI的重要性日益凸显,因为它允许Java程序调用本地库的功能,...
9. **测试和调试**:在开发过程中,对JNI代码的测试和调试可能较为复杂,因为涉及到Java和C两层。可以使用Java的`System.loadLibrary`和`System.mapLibraryName`等方法来检查库加载是否成功,同时使用C/C++的调试器...
在eSDK TP的上下文中,Java可以作为上层应用的开发语言,通过JNI(Java Native Interface)来调用底层的Native接口,实现Java应用与硬件或操作系统更紧密的交互。 在压缩包中的文件列表中,“eSDK TP V100R005C01 ...
微信支付是腾讯公司推出的在线支付服务,...通过分析这个Java网页Native微信支付源码,我们可以了解到微信支付的基本流程、关键接口的调用以及支付过程中涉及的安全策略,这对于理解和实现类似功能具有重要的参考价值。
在移动应用开发领域,Android和React Native的混合开发已经成为一种常见的技术栈选择,它结合了原生应用的优势和Web开发的便利性。本教程通过"Android和React Native混合开发Demo",将详细介绍如何在Android应用中...
在Java环境中调用C++接口,我们需要借助Java的JNI(Java Native Interface)技术。JNI是一种允许Java代码和其他语言写的代码进行交互的标准,它使得Java可以调用C/C++的函数,反之亦然。在本项目中,我们需要编写一...
JNI是Java平台的一部分,它为Java程序员提供了一个接口,可以在Java应用中调用本地(非Java)代码,反之亦然。通过JNI,我们可以利用C/C++的强大功能,如加密库,来增强Java应用的功能。 在加密解密领域,常见的...
Delphi 11作为一款强大的Windows桌面应用程序开发工具,有时需要与Java环境进行交互,这通常涉及到跨语言调用接口。本篇将详细介绍如何在Delphi 11中调用Java接口,并传递参数及接收返回结果。 1. **JNI(Java ...
在“电商App项目案例开发”部分,学习者将接触到实际项目开发的流程,包括需求分析、设计、编码、测试和部署。这将涉及到应用架构设计,例如如何采用模块化和组件化的方法组织代码,以及如何进行代码重构以保持代码...
Java Native Interface(JNI)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码进行交互。这个技术主要用于在Java应用程序中嵌入本地代码,或者让本地代码调用Java方法。通过JNI,开发者可以利用Java的...
### 大话Web & Native混合开发 #### 一、引言 随着移动互联网的发展,越来越多的应用程序被开发出来,...同时,新的工具和框架也将不断出现,进一步简化混合应用的开发流程,使开发者能够更专注于创新而非技术细节。
本教程将详细探讨如何使用C++通过JNI(Java Native Interface)来调用Java接口。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。下面,我们将深入讲解这个过程,并结合实际例子“CInvokJava...
4. **API接口设计**:二次开发时,你需要定义一系列的Java API接口,以供上层应用调用,比如打卡、查询考勤记录、设置设备参数等功能。 5. **异常处理**:考虑到网络不稳定、设备故障等因素,良好的异常处理机制至...
首先,Java扫描仪接口调用涉及到Java的JNI(Java Native Interface)或JNA(Java Native Access)。JNI是Java平台的标准接口,允许Java代码与其他语言写的代码进行交互,如C/C++。通过JNI,Java应用程序可以直接调用...
Java本地方法接口(Java Native Interface, 简称JNI)是Java平台提供的一种标准接口,允许Java代码调用本地应用程序编程接口(Native API),即非Java语言编写的函数。通过JNI,Java程序可以访问C或C++编写的代码,...
五、JNI开发流程 1. 定义Java类,声明`native`方法。 2. 使用`javah`工具生成JNI头文件,该文件包含了Java方法在C/C++中的原型。 3. 编写C/C++代码,实现JNI头文件中声明的方法。 4. 编译C/C++代码为动态链接库...
Java Native Interface(JNI)是Java平台的一个重要组成部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都是必不可少的,比如当需要调用操作系统底层功能、使用硬件设备或者提升性能时。这篇博客...
Java JDK实例开发宝典是一本全面深入探讨Java开发工具包(Java Development Kit)的实践指南。JDK是Java编程的基础,包含了编译器、运行环境、调试工具和其他实用工具,对于任何想要学习或精通Java编程的开发者来说...