JNI简单使用

笔记本摄像头模拟监控推送RTSP流 FFmpeg软件:选择Windows builds by BtbN一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。选择Windows版本EasyDarwin开源流媒体服务器 支持Windows、Linux、macOS平台;支持RTSP推流分发(推模式转发);支持RTSP拉流分发(拉模式转发);VLC Media Player软件:选择Windows64bit支持众多与及文件格式,并支持DVD影音光盘,VCD影音光盘及各类协议。 阅读详情

JNI(Java Native Interface ),java本地接口,为了方便java代码调用C++/C代码.

Java本身的跨平台特性导致它和本地交互的能力不是特别强,一些和操作系统相关的特性Java没法完成.所以Java就提供了JNI接口历来调用C++/C编写的代码.

下面写一个demo,让大家体会体会(注:我用的是Linux系统):

  1. 新建一个文件夹jni2,在这里先写一个Java文件,命名为JniTest2.java,内容如下:

代码:

import java.lang.System:
public class Jnitest2{
	static{
		System.loadLibrary("jni-test");
	}
	public static void main(String[] args){
		Jnitest2 jnitest2 = new Jnitest2();
		System.out.println(jnitest2.get());
		jnitest2.set("hello world");
	}
	public native String get();
	public native void set(String str);
}

2.   回到命令窗口,切换到jni2文件夹,执行命令 javac Jnitest2.java, 生成Jnitest2.class 文件,再执行javah Jnitest2,生成Jnitest2.h头文件.(注意:生成的文件不会立即显示出来,需要重新打开jni2文件夹)

Jnitest2.h 代码内容:

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

#ifndef _Included_Jnitest2
#define _Included_Jnitest2
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Jnitest2
 * Method:    get
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_Jnitest2_get
  (JNIEnv *, jobject);

/*
 * Class:     Jnitest2
 * Method:    set
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_Jnitest2_set
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif

3. 在jni2目录下接着创建一个cpp文件.文件名test2.cpp,

#include "Jnitest2.h"//这里因为生成的Jnitest2.h文件和test2.cpp文件放在了同一目录
//如果不是同一目录的话,需要把Jnitest2.h文件所在的完整路径写上去
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_Jnitest2_get(JNIEnv *env,jobject thiz){
    //对应java的get()方法
    //这里的jstring 代表java方法里返回的是String对象
    //至于写Java_Jnitest2_get的原因:Java_类名_方法名
	printf("invoke get c++\n");
	return env->NewStringUTF("Hello from JNI !");
}
JNIEXPORT void JNICALL Java_Jnitest2_set(JNIEnv *env,jobject thiz,jstring string){
	//对应java的set方法
    printf("invoke set from C++\n");
	char* str = (char*)env->GetStringUTFChars(string ,NULL);
	printf("%s\n",str);
	env->ReleaseStringUTFChars(string,str);
}

4,接着需要把test2.cpp文件链接生成so库,​​​​​​

大家注意到,Jnitest2.h的头文件中有#include <jni.h>,而且jni.h也确实存在jdk的路径里面,

至于我写到linux这一层,是因为我在运行是它又提示我缺少jni_md.h文件,而这个文件恰好在linux文件夹中,所以我直接copy 了一份jni.h文件到linux文件夹中.

 

5,运行测试

Orange3实战教程:实例---文本分类 我们可以使用预测模型按作者、类型、情感等对文档进行分类。在此工作流中,我们根据文档的Aarne Thompshon Uther索引对文档进行归类,这是故事的主题定义。我们使用两个简单的学习器,Logistic回归和朴素贝叶斯,两者都可以在诺谟图中检查。然后再从可视化分类中添加列线图组件,观察哪些词对逻辑回归最重要。也可以尝试使用在朴素贝叶斯模型上,并编辑连线属性。再从模型中添加朴素贝叶斯模型,以尝试不同的学习器。 阅读详情

相关推荐

电赛MSP430F5529之超声波测距+OLED 显示(含主要代码)

目录 前言 一、超声波介绍 二、部分代码 三、总结 题外话: 前言 哎,又双叒叕,电赛延期了,看起来像是遥遥无期,但是肯定要考虑大局,大家就继续抓紧时间学习知识,巩固自己的知识,更进一步。好了,今天主要是继承上一篇博文(OLED显示)写的,主要是写超声波测距的(US-015) 一、超声波介绍 利用TI公司的MSP430F5529单片机+超声波模块+OLED 实现 这里主要是利用单片机定时器的捕获功能来捕获超声波高电平持续时间,再计算得到距离,最后再在OLED 屏幕上显示出来,上图

不说二话的自家人的博客 1万+

java jni教程_java中JNI的简单使用方法介绍(详细)

本篇文章给大家带来的内容是关于JNI的简单使用方法介绍(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。JNI可以让我们在java代码中调用本地库的功能。下面记录一下JNI简单的使用方法1、创建java端接口public class JNIIterface {// 导入最终生成的dll文件static {System.loadLibrary("JNIDemo");}// 声明...

weixin_42510835的博客 1693

Opencv学习-仿射变换与透视变换(几何变换)1

• 一、定义 变换是指对图像进行拉伸、收缩、扭曲和旋转等几何操作。对于平面区域有两种方式的几何转换:一种是基于23矩阵进行的变换,被称为仿射变换;一种是基于33矩阵进行的变换,被称为透视变换。也可被称为平面变换和空间变换。因为仿射变换需要找到3个映射点,三点确定一个平面。而透视变换需要确定四个映射点,四点确定一个三维空间。 • 二、Opencv中的函数定义 由于Opencv中都已封装好函数,变换的...

勉強 583

Android-JNI的简单使用

一、什么是JNI 1、jni的含义 JNI即为java native interface Java本地接口;JNI是用来调用本地方法的技术,用来使Java和C/C++进行通信。 简单来说,Java运行一个程序需要和不同的系统进行交互,在windows里就要和windows底层平台交互,mac里就要和mac的底层平台交互, JVM就是通过大量的JNI技术能够使Java运行在不同的系统平台当中,与不同的系统平台底层进行交互。 2、Java与JNI类型对照表 基本类型对照 引用类型对照 3、什么是动态库 静态

HZF 6568

微信本地数据解密实战:从AES加密原理到EnMicroMsg.db恢复指南

数据加密是保障信息安全的核心技术,其中对称加密算法AES因其高效可靠,被广泛应用于各类本地数据保护场景。其原理是通过特定密钥对数据进行混淆转换,确保未经授权者无法读取原始内容。在移动应用领域,本地数据库加密对于保护用户隐私、防止数据泄露具有重要价值。微信作为国民级应用,对其本地存储的聊天记录数据库(EnMicroMsg.db)采用了基于设备标识和用户UIN生成的AES-256-CBC加密方案。理解这一机制,不仅有助于在合法合规前提下进行个人数据备份与恢复,也为开发者进行客户端安全分析、兼容工具开发提供了基础

weixin_30764883的博客 569

fMRI数据处理:从DICOM到NIFTI(下)

上一篇我们完成了对原始DICOM的数据整理,将其整理为了BIDS目录结构。作为从从DICOM到NIFTI的最后一篇,当然是介绍如何批量将DICOM格式转NIFTI格式啦!从DICOM到NIFTI系列就完成啦!撒花★,°.°★。从核磁机器把数据拷回来——到整理成BIDS格式——到批量转格式;我们fMRI数据处理的第一步就算是正式迈出去啦!接下来的内容,敬请期待吧~

weixin_44933894的博客 2078

JNI全流程实例使用总结

为了更好的获得一些比较独立的模块的性能,比如视频模块,寻路模块,通过对C++ 接口的封装,通过JNI技术对它进行跨语言调用。 那什么是JNI呢?JNI (Java Native Interface,Java本地接口)是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用/或库,也可以被其他程序调用。 本地程序一般是用其它语言(C、C++或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序。.....................

流子的专栏 3052

GEO优化实战:用AnswerBit量化AI搜索可见度与品牌监控体系

生成式引擎优化(GEO)正取代传统SEO,成为品牌在AI搜索生态中获取可见度的关键。当用户习惯从“翻列表”转向“直接问AI”,品牌能否被生成式引擎识别、引用并正向推荐,直接决定了其在用户决策链条中的存在感。AI搜索可见度因此从模糊概念演变为可度量的运营指标,涵盖提及率、引文率、情感分与回源质量等维度。腾讯AnswerBit作为答案侧分析工具,帮助运营者拆解AI回复中的品牌语境与引用来源,让优化动作有据可循。从内容结构化改造、品牌实体建设到第三方权威背书,GEO要求团队建立“度量-优化-再度量”的闭环。文章结

weixin_31100517的博客 150

如何快速使用JNI

这是生成共享库时常用的选项,使得生成的代码在加载到内存中的任何位置时都可以正确运行。,允许Java代码与其他语言(通常是C或C++)编写的本地应用程序或库进行交互。简而言之就是,Java可以通过JNI调用C 或 C++ 语言写的代码。在这里,包含了特定于Windows系统的Java头文件。: 指定生成一个共享库(动态链接库),而不是可执行文件。5、根据生成的头文件里的函数声明实现对应的函数。为后缀名),通常是使用静态代码块来进行导入。: 源文件名,包含了具体的JNI方法实现。: 指定输出文件的名称为。

m0_62943934的博客 1427

Java开发者的福音:Aspose 25.10全系列(Cells/Words/PDF/Slides)最新版破解与集成保姆级教程

本文为Java开发者提供了Aspose 25.10全系列组件(Cells/Words/PDF/Slides)的最新版破解与集成保姆级教程。通过详细的Maven依赖配置、字节码修改技术绕过限制,以及Spring Boot项目中的实战集成指南,帮助开发者高效实现Office文档处理功能,提升开发效率。

weixin_30919429的博客 344

信贷审批中的那些坑:从零开始搭建风控策略体系的5个关键步骤

本文深入探讨了信贷审批中的风控策略体系搭建,从数据陷阱识别、规则冲突诊断到反欺诈攻防,提供了5个关键步骤的实战指南。重点解析了如何通过特征工程、决策树优化和模型可解释性技术,构建动态平衡的风控体系,有效降低逾期风险并提升审批效率。

weixin_29253711的博客 412

JNI 使用

JNI(Java Native Interface)是Java语言提供的一种机制,用于在Java应用程序中调用本地代码(Native Code)或者让本地代码调用Java代码。它为Java和其他编程语言(如C、C++)之间的交互提供了一种标准的接口。

DengCaixiang2021的博客 899

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

JNI简单使用的小总结

JNI全称指的就是:Java Native Interface java本地接口,它是一个双向接口,顾名思义就是JAVA程序中为了使用C和C++语言编写的程序而形成的一种工具,同样反过来也是可以的,主要目的就是为了操作底层硬件,提高应用程序的运行效率,复用c/c++开源软件代码等等一系列需要其他语言支持需求。 JNI使用的缺点:相关模块不再具有跨平台的特性,程序也不再是绝对的安全容易崩溃。

晓远 406

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android Jni的介绍和简单Demo实现

JNI 全程:JNI(Java Native Interface),通俗翻译:Java本地方法官方说法:提供一种Java字节码调用C/C++的解决方案,JNI描述的是一种技术。所以这里的Nativie的本地的意思就是C/C++,所以JNI通俗理解就是Java调用C/C++的方案技术。//定义变量和方法private:int number;public://定义方法。

wenzhi的博客 3227

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JNI简单示例

JNI简单示例 例子简介:     这个简单的例子展示了上层应用程序如果利用JNI接口和底层驱动进行交互:上层应用通过两个按钮控制灯的开关。 步骤: 一、应用程序     包含两个按钮,一个是开,一个是关,另外包含一个RadioButton指示灯的状态。       关键代码: package com.android.test;   public class LightCont

Hello ELETE~~!! 393

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JNI_简单的登录界面

jni的实践。看了几天jni的视频。把这些天学的东西 小小的总结一下。把代码重新写一次。加深印象。 那就用jni写一个 简单登录界面。这里有一个问题 为什么某些银行的客户端,或者是涉及到商业的 手机客户端 登录界面要用C语言写,而不用JAVA? 因为JAVA在这方面的安全性不够高,很容易被反编译,所以 C是最好的选择。 1、新建一个android的项目。(图1) 2、新建一个ja

谁人曾记负你多,一笑风云过 1089

java .jni_Java JNI简单实现

Java JNI简单实现JNI(Java Native Interface)允许了Java和C&C++进行交互?这不折腾人嘛!一、JNI简述二、JNI基本类型copy表一份,很详细的了!Java类型本地类型描述booleanjbooleanC/C++8位整型bytejbyteC/C++带符号的8位整型charjcharC/C++无符号的16位整型shortjshortC/C++带符号的16...

weixin_42558093的博客 222

java和python交互 jni_Java JNI简单实现

Java JNI简单实现JNI(Java Native Interface)允许了Java和C&C++进行交互?这不折腾人嘛!一、JNI简述二、JNI基本类型copy表一份,很详细的了!Java类型本地类型描述booleanjbooleanC/C++8位整型bytejbyteC/C++带符号的8位整型charjcharC/C++无符号的16位整型shortjshortC/C++带符号的16...

weixin_29272301的博客 935

JNI的简单应用(native)

  JNI的简单使用 以一个最简单的HelloWorld程序来介绍一下JNI的最基本的使用方法:1)首先要有一个HelloWorld.java。这个是主文件,里面包括本地方法的java声明,一个main函数,还有一个静态代码段,用来导入所需要

smily的专栏 1167

jni得简单使用

JNI的简单使用 以一个最简单的HelloWorld程序来介绍一下JNI的最基本的使用方法:1)首先要有一个HelloWorld.java。这个是主文件,里面包括本地方法的java声明,一个main函数,还有一个静态代码段,用来导入所需要的动态连接库(在windows里是.dll)。代码如下://HelloWorld.javaclass HelloWorld {    public native 

ggyy的专栏 1649

一个简单的JNI示例

Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。 标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的 你希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的 程序的某些部分对速度要求...

talentluke的专栏 164

JNI简单理解使用

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

计算机王的博客 366

java JNI编程简单实践

JNI编程简单实践JNI简介简单示例HelloWorld变量获取和赋值 JNI简介 在维基百科中对JNI的定义如下:JNI (Java Native Interface,Java本地接口)是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用/或库,也可以被其他程序调用。 本地程序一般是用其它语言(C、C++或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序。在Java语言中native方法就是使用JNI技术来实现的,通过JNI技术可以调用底层C++或C语言编写的代码。 简单示例 H

zhanghl的博客 287

Android - JNI环境搭建和简单案例入门

在android的JNI中,要先将相应的C/C++语言打包生成.so文件(c++的函数库),然后导入到lib文件夹中供java调用。需要的工具: Android 原生开发工具包 (NDK) CMake:一款外部构建工具,可与 Gradle 搭配使用来构建原生库。1)打开 Settings>Appearance&Behavior>System Settings>Android SDK>SDK Tools , 勾选Show Package Details ,选择版本下载,大概1G内 注:如果选择23.x及以上版

czssltt的博客 1806

最简单的JNI

 最简单的JNI       JNI就是“Java本地化”,适用于和C/C++混合编程,复杂的理论不必多说,下面一个例子说明了怎样JNI。以下工作都在一个开发目录下,假设环境变量都已经设好。       1. 编写类似这样的java文件,保存为 HelloWorld.java 的文件,并javac HelloWorld 产生class文件              class He

dijkstar的专栏 1264
上一篇: 基于Flutter的疫情填表软件
下一篇: ThreadLocal介绍
OneLinee
博客等级 码龄10年 11粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值