`
cjblog
  • 浏览: 68614 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ubuntu java jni 调用 c

 
阅读更多

创建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。附件包含源码

  • 大小: 34.9 KB
  • 大小: 46 KB
  • 大小: 14.5 KB
  • 大小: 59.6 KB
分享到:
评论

相关推荐

    在windows中jni(生成dll)Linux中jni(生成so),java调用曾c++

    在本主题中,我们将深入探讨如何在Windows和Linux环境中利用JNI来生成动态链接库(DLL for Windows,SO for Linux),并使Java能够调用C++编写的函数。 1. **Java调用C++的基本原理** - JNI为Java应用程序提供了一...

    java调用C++编写的动态库dll

    它提供了一种方式,使得Java程序员可以编写本地方法,这些方法可以直接调用C/C++的函数或者访问C/C++的数据结构。 1. **创建JNI头文件** 在Java中定义一个本地方法,例如: ```java public class NativeDemo { ...

    ubuntu上面使用jni例子

    JNI的核心在于创建本地方法接口,这些接口允许Java代码调用C/C++编写的函数,反之亦然。下面我们将深入探讨在Ubuntu上使用JNI的步骤和关键知识点: 1. **安装Java开发环境**:首先,确保你的Ubuntu系统已经安装了...

    ubuntu上,java用的JNI AAC编码库

    本主题聚焦于在Ubuntu操作系统上,如何使用Java通过JNI调用AAC编码库,为Java应用程序提供高效的AAC音频编码能力。这里我们将详细讨论AAC编码库、JNI的概念以及如何在Ubuntu上进行集成和应用。 AAC(Advanced Audio...

    android jni调用详细解说

    通过这种方式,我们不仅可以在Android中调用C/C++代码,还可以利用C/C++的强大功能来提高应用程序的性能。此外,由于Android NDK r4b (Crystax)支持C++异常、RTTI和标准C++库,因此可以在原生层面上实现更为复杂的...

    ubuntu_netbeans_jni

    总结来说,这个主题涉及的是如何在Ubuntu Linux上使用NetBeans IDE进行JNI开发,包括设置开发环境,创建Java和C/C++项目,以及构建和运行包含JNI调用的应用程序。这一过程需要对Java、C/C++编程以及JNI接口有一定...

    在ubuntu20.04 下java 调用QT写的C++动态库的demo

    通过JNI,Java开发者可以调用本地(非Java)代码,比如C++或C,反之亦然。 **Ubuntu 20.04环境**: Ubuntu 20.04是基于Debian的Linux发行版,提供了稳定且强大的开发环境。对于C++和Java开发,它预装了必要的编译器...

    Android通过JNI调用驱动程序(完全解析实例)

    本文的目标是帮助读者理解如何在Android系统中使用Java编写应用程序界面并通过JNI调用C/C++层的代码来操作特定的驱动节点。这一过程不仅为底层驱动开发人员提供了一个重要的调试通道,同时也是在Android系统下实现...

    ubuntu下第一个Jni例子

    JNI在很多场景下都是必不可少的,比如访问操作系统特定功能、调用C/C++库或者提高程序性能等。这篇博客将引导我们完成在Ubuntu环境下创建并运行一个简单的JNI示例。 首先,我们需要了解JNI的基本概念。JNI接口提供...

    Android通过JNI调用驱动程序(例子).pdf

    本文档通过一个具体的例子——通过JNI调用驱动程序来控制LED灯的开关,详细介绍了如何编写JNI模块以及如何在Java应用中调用这些模块。本例由赖玉平(Peter Lai)提供,是学习JNI编程的良好起点。 #### 二、目标与前提...

    springboot环境下java调用c程序生成动态链接库(.so文件),并调用(基于JNI,Ubuntu)+源代码+文档说明

    springboot环境下java调用c程序生成动态链接库(.so文件),并调用(基于JNI,Ubuntu) ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业...

    springboot环境下java调用c程序生成动态链接库(.so文件),并调用(基于JNI,Ubuntu).zip

    springboot环境下java调用c程序生成动态链接库(.so文件),并调用(基于JNI,Ubuntu)C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的...

    Java调用DLL例子

    JNative是一个开源的Java库,它提供了一种方法使得Java程序能够直接调用C/C++编写的函数,从而间接实现了调用DLL的功能。JNative通过JNI(Java Native Interface)技术,为Java程序员提供了一个安全且灵活的方式来...

    jni_example:springboot环境下java调用c程序生成动态链接库(.so文件),并调用(基于JNI,Ubuntu)

    JNI_example:springboot环境下java调用c程序生成动态链接库(.so文件),并调用这个示例,就是在Spring Boot应用中通过JNI技术调用C语言编写的动态链接库(.so文件),以实现跨语言的通信。 首先,让我们了解JNI的...

    Ubuntu 使用Jni开发实例详解

    在`Prompt.c`中,你需要使用JNI接口来与Java虚拟机(JVM)进行交互,如获取字符串、释放资源以及创建返回的Java字符串。 4. **编译动态链接库**: 使用`gcc`编译器,结合JNI相关的头文件路径和选项(如`-I`和`-...

    android调用c和c++源代码

    在Android平台上,有时候我们需要利用C或C++的高效性能来处理特定任务...在实际开发中,通过JNI调用C/C++代码可以提高性能,但也会增加项目的复杂性。因此,合理地选择使用JNI的地方和优化JNI代码的性能是非常重要的。

    国密SM系列算法开源工具箱GmSSLJNI Java扩展库Windows x64二进制编译版本

    软件介绍:本项目是GmSSL密码库的Java语言封装,可以用于Java环境和Android系统上的应用开发。GmSSL-Java目前提供了随机数...使用说明:在使用时请确保自身项目加载gmssl和gmssljni库,类与方法的调用请查看readme.md

    opencv2.4.9 ubuntu12.04LTS i386下的编译包java

    JNI允许Java代码直接调用C/C++的函数,这样Java开发者就可以利用OpenCV的强大功能。 特别指出的是,这个编译包还包含了对ffmpeg和x264库的支持。ffmpeg是一个强大的跨平台的音频和视频处理工具,它支持多种编码和...

Global site tag (gtag.js) - Google Analytics