创建java工程,这里我创建的是一个maven工程,java文件JniUtil:
package org.chenjun.jni; public class JniUtil { public native static int getSum(int a,int b); static{ System.loadLibrary("jniUtil"); } }
利用javah编译出头文件 org_chenjun_jni_JniUtil.h:
我在ecilpse里面创建了一个c动态链接库工程jniUtil,将头文件放到该工程下面,引入jdk的include和linux目录:
新建一个c文件jniUtil.c:
/* * javaCallC.c * * Created on: 2013年8月20日 * Author: chenjun */ #include <jni.h> #include <stdio.h> #include "org_chenjun_jni_JniUtil.h" JNIEXPORT jint JNICALL Java_org_chenjun_jni_JniUtil_getSum (JNIEnv *env, jclass clazz, jint a, jint b){ return a + b; }
编译jniUtil工程得到一个动态链接库文件libjniUtil.so:
将这个动态链接库文件放到java工程的resources目录下面,这个路径可以随便放的,只要能找到这个动态链接库就ok。
我建立了一个单元测试类:
package org.chenjun.jni; import org.junit.Assert; import org.junit.Test; public class JniUtilTest { @Test public void testGetSum(){ int c = JniUtil.getSum(2, 5); Assert.assertEquals(7, c); } }
要运行这个单元测试类,首先配置运行参数:
-Djava.library.path=${workspace_loc:/org.chenjun.jni/src/main/resources}
debug run ok。附件包含源码
相关推荐
在本主题中,我们将深入探讨如何在Windows和Linux环境中利用JNI来生成动态链接库(DLL for Windows,SO for Linux),并使Java能够调用C++编写的函数。 1. **Java调用C++的基本原理** - JNI为Java应用程序提供了一...
它提供了一种方式,使得Java程序员可以编写本地方法,这些方法可以直接调用C/C++的函数或者访问C/C++的数据结构。 1. **创建JNI头文件** 在Java中定义一个本地方法,例如: ```java public class NativeDemo { ...
JNI的核心在于创建本地方法接口,这些接口允许Java代码调用C/C++编写的函数,反之亦然。下面我们将深入探讨在Ubuntu上使用JNI的步骤和关键知识点: 1. **安装Java开发环境**:首先,确保你的Ubuntu系统已经安装了...
本主题聚焦于在Ubuntu操作系统上,如何使用Java通过JNI调用AAC编码库,为Java应用程序提供高效的AAC音频编码能力。这里我们将详细讨论AAC编码库、JNI的概念以及如何在Ubuntu上进行集成和应用。 AAC(Advanced Audio...
通过这种方式,我们不仅可以在Android中调用C/C++代码,还可以利用C/C++的强大功能来提高应用程序的性能。此外,由于Android NDK r4b (Crystax)支持C++异常、RTTI和标准C++库,因此可以在原生层面上实现更为复杂的...
总结来说,这个主题涉及的是如何在Ubuntu Linux上使用NetBeans IDE进行JNI开发,包括设置开发环境,创建Java和C/C++项目,以及构建和运行包含JNI调用的应用程序。这一过程需要对Java、C/C++编程以及JNI接口有一定...
通过JNI,Java开发者可以调用本地(非Java)代码,比如C++或C,反之亦然。 **Ubuntu 20.04环境**: Ubuntu 20.04是基于Debian的Linux发行版,提供了稳定且强大的开发环境。对于C++和Java开发,它预装了必要的编译器...
本文的目标是帮助读者理解如何在Android系统中使用Java编写应用程序界面并通过JNI调用C/C++层的代码来操作特定的驱动节点。这一过程不仅为底层驱动开发人员提供了一个重要的调试通道,同时也是在Android系统下实现...
JNI在很多场景下都是必不可少的,比如访问操作系统特定功能、调用C/C++库或者提高程序性能等。这篇博客将引导我们完成在Ubuntu环境下创建并运行一个简单的JNI示例。 首先,我们需要了解JNI的基本概念。JNI接口提供...
本文档通过一个具体的例子——通过JNI调用驱动程序来控制LED灯的开关,详细介绍了如何编写JNI模块以及如何在Java应用中调用这些模块。本例由赖玉平(Peter Lai)提供,是学习JNI编程的良好起点。 #### 二、目标与前提...
springboot环境下java调用c程序生成动态链接库(.so文件),并调用(基于JNI,Ubuntu) ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业...
springboot环境下java调用c程序生成动态链接库(.so文件),并调用(基于JNI,Ubuntu)C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的...
JNative是一个开源的Java库,它提供了一种方法使得Java程序能够直接调用C/C++编写的函数,从而间接实现了调用DLL的功能。JNative通过JNI(Java Native Interface)技术,为Java程序员提供了一个安全且灵活的方式来...
JNI_example:springboot环境下java调用c程序生成动态链接库(.so文件),并调用这个示例,就是在Spring Boot应用中通过JNI技术调用C语言编写的动态链接库(.so文件),以实现跨语言的通信。 首先,让我们了解JNI的...
在`Prompt.c`中,你需要使用JNI接口来与Java虚拟机(JVM)进行交互,如获取字符串、释放资源以及创建返回的Java字符串。 4. **编译动态链接库**: 使用`gcc`编译器,结合JNI相关的头文件路径和选项(如`-I`和`-...
在Android平台上,有时候我们需要利用C或C++的高效性能来处理特定任务...在实际开发中,通过JNI调用C/C++代码可以提高性能,但也会增加项目的复杂性。因此,合理地选择使用JNI的地方和优化JNI代码的性能是非常重要的。
软件介绍:本项目是GmSSL密码库的Java语言封装,可以用于Java环境和Android系统上的应用开发。GmSSL-Java目前提供了随机数...使用说明:在使用时请确保自身项目加载gmssl和gmssljni库,类与方法的调用请查看readme.md
JNI允许Java代码直接调用C/C++的函数,这样Java开发者就可以利用OpenCV的强大功能。 特别指出的是,这个编译包还包含了对ffmpeg和x264库的支持。ffmpeg是一个强大的跨平台的音频和视频处理工具,它支持多种编码和...