`
bannamoon
  • 浏览: 53810 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA JNI调用本地方法

    博客分类:
  • JAVA
阅读更多
声明Native方法:
package cn.com.sky.jni;
public class HelloNative {
	public static native void hello();
	public native void test();
}

编译成.class文件之后,运行javah命令生成头文件。生成的头文件规则为[包名_类名.h],其中包名中的"."会自动替换为"_"。上文中生成的头文件为cn_com_sky_jni_HelloNative.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class cn_com_sky_jni_HelloNative */

#ifndef _Included_cn_com_sky_jni_HelloNative
#define _Included_cn_com_sky_jni_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     cn_com_sky_jni_HelloNative
 * Method:    hello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_hello
  (JNIEnv *, jclass);

/*
 * Class:     cn_com_sky_jni_HelloNative
 * Method:    test
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_test
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

编写cn_com_sky_jni_HelloNative.c
#include <stdio.h>
#include "cn_com_sky_jni_HelloNative.h"

JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_hello(JNIEnv* env, jclass cls){
	printf("native\n");
}

JNIEXPORT void JNICALL Java_cn_com_sky_jni_HelloNative_test(JNIEnv* env, jobject obj){
	printf("test\n");
}


运用工具生成HelloNative.dll及HelloNative.lib(本人使用的是VS2008),在使用工具是需要引入头文件"jni.h"等。

调用dll,在执行调用程序时,需要设置PATH使程序能找到dll文件或者用参数-Djava.library.path=D:\dll引入。其中D:\dll为我本地放置dll和lib文件的目录。
package cn.com.sky.jni;

/**
 * @author Administrator
 *
 */
public class HelloNativeMain {
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.loadLibrary("HelloNative");
		HelloNative.hello();
	}

}
分享到:
评论

相关推荐

    JAVA通过JNI调用C#dll的整个项目工程

    使用`System.loadLibrary`加载C++编译生成的动态链接库,然后就可以在Java代码中调用本地方法,间接实现对C# DLL的调用。 7. **测试与调试**: 创建一个简单的Java应用程序来调用这些本地方法,测试C# DLL的功能...

    Java JNI调用DLL方法

    在本案例中,我们讨论的是如何使用Java JNI调用一个名为"AlarmTTS"的VC(Visual C++)动态链接库(DLL)并进行调试。 首先,我们需要了解Java部分的代码。`CallAlarmTTSDll`类是Java程序的核心,它定义了三个本地...

    Java JNI调用IC卡读卡器

    通过以上步骤,你就可以在Java应用程序中利用JNI调用IC卡读卡器的DLL,实现读取和写入IC卡的功能。注意,调用DLL可能会涉及线程安全、错误处理以及资源管理等问题,所以在实际应用中需要仔细考虑这些因素。此外,...

    java 的jni本地调用简单实例

    总结来说,这个实例展示了Java通过JNI调用C++本地方法的基本流程,包括Java端的声明、JNI头文件的生成、C++的实现、动态链接库的编译以及最终的调用。虽然这个实例没有涉及复杂的类型转换,但在实际应用中,根据数据...

    JAVA JNI调用DLL完整步骤

    运行Java程序,JNI会自动加载DLL并调用对应的本地方法。例如: ```java public static void main(String[] args) { NativeDemo demo = new NativeDemo(); demo.callDllFunction(); } ``` 6. **异常处理与...

    使用JNI调用本地接口(解决中文问题)

    用 JNI 调用本地接口 作 者 : nxy1027@163.com在本文中,我们将深入探讨如何使用JNI(Java Native ...通过这些步骤和技巧,我们可以成功地在Java中通过JNI调用本地接口,同时处理中文字符串,实现跨语言的高效通信。

    java结合jni调用本地方法[参照].pdf

    下面将详细解释如何使用JNI调用本地方法的步骤。 1. **编写Java中的调用类** 在Java中,你需要创建一个类并声明你想要调用的本地方法。这些方法前面会标记为`native`,例如: ```java package hxzon.jni; ...

    Java JNI调用动态库(Linux、Windows)的实现步骤

    - 测试调用本地方法,检查是否按预期工作。 通过以上步骤,您就可以成功地在 Java 应用中使用 C/C++ 编写的本地方法了。这对于提高性能、利用现有 C/C++ 代码库或访问特定平台功能都非常有用。

    C++库封装JNI接口-实现java调用c++

    Java程序可以通过JNI调用本地方法,这些本地方法是用其他语言编写的,并通过JNI接口暴露给Java。这个过程涉及到以下几个步骤: 1. **创建本地方法声明**:在Java类中,你需要声明本地方法。这些方法没有具体实现,...

    Java通过JNI调用C++的DLL文件.docx

    通过 JNI,Java 应用程序可以调用本地库,反之亦然。本文将详细介绍如何使用 JNI 将 Java 应用程序与 C++ DLL 文件集成。 标题解析 本文的标题“Java 通过 JNI 调用 C++ 的 DLL 文件”表明了文章的主要内容,即使用...

    java jni 调用刷卡器

    - JNI接口定义了一套规范,使得Java代码可以调用本地方法(非Java语言编写),同时本地方法也可以调用Java方法。 - 在Java中,本地方法通过`native`关键字声明,并在C/C++中实现。Java虚拟机(JVM)会查找对应的...

    Java jni调用c实例

    在这个"Java jni调用c实例"中,我们将深入探讨如何通过JNI在Java应用程序中调用C语言编写的函数。 首先,我们需要了解JNI的基本结构。一个典型的JNI程序包括Java源代码、C/C++源代码以及对应的头文件。Java源代码中...

    java调用c代码:AVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式 )。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法

    JNI(Java Native Interface)就是为了弥补这一不足,它允许Java代码调用本地方法,这些方法通常以库文件的形式存在,如Windows上的DLL(Dynamic Link Library)或UNIX上的SO(Shared Object)文件。通过JNI,Java...

    java的JNI本地方法介绍大全

    1. **标准Java类库可能不完善**:如果Java的标准类库不提供你需要的功能,你可以通过JNI调用本地库来扩展功能。 2. **重用已有的代码库**:如果你有一个用C++或其他语言编写的库,你可能希望在Java应用程序中复用它...

    Java通过JNI调用C语言函数库的方法.zip

    JNI提供了一组API,让Java代码能够调用本地方法,同时本地代码也可以调用Java方法。 2. **环境配置** 在开始之前,需要确保Java开发环境(JDK)和C编译器(如GCC)已经安装并配置好。同时,需要设置JAVA_HOME环境...

    java结合jni调用本地方法[归类].pdf

    Java 本地接口(Java Native Interface,JNI)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下非常有用,比如访问操作系统底层功能、使用硬件加速库或者集成已有的C/C++代码。...

    JNI调用本地C语言

    总结来说,JNI调用本地C语言的过程包括:编写Java类声明本地方法、生成C语言头文件、实现C/C++源代码、配置编译环境、编译生成DLL库,并确保Java程序能够正确加载和调用这个库。这个过程使得Java开发者可以充分利用...

    java的JNI本地调用

    7. **加载并调用本地方法** 在Java代码中加载动态链接库,并通过`native`关键字声明的方法调用本地实现。 通过以上步骤,我们就可以成功地在Java程序中调用本地代码,实现跨语言的功能扩展和性能优化。虽然使用...

    Java通过JNI调用算法的一些坑

    Java通过JNI(Java Native Interface)调用本地C/C++代码是一种常见的技术,它允许Java程序直接访问和利用原生库中的高效算法。然而,这种方式也带来了内存管理的复杂性,可能导致内存泄露,尤其是在处理深度学习等高...

    JniTest.rar Android Java JNI 调用C++

    通过JNI,Java程序员可以在Java程序中调用本地方法,反之亦然。 - JNI头文件`&lt;jni.h&gt;`提供了必要的结构和类型定义,以便C++代码可以理解Java对象和类。 2. **JNI的使用步骤**: - 定义Java本地方法:在Java类中...

Global site tag (gtag.js) - Google Analytics