我选择的开发工具链是JDK1.6 Netbeans5.5 Netbeans-mobility-5.5 Netbeans-cnd-5_5-windows Sun_java_wireless_toolkit-2_5-beta2-windows 如下
这篇主要是实战在netbeans下的Java JNI程序开发。
为什么JNI重要
在java中直接访问硬件驱动,操作系统的接口就必须通过JNI方式。
本实践中需要的软件有:
J2SE Development Kit (JDK™) 6.0 (download)
NetBeans IDE 5.5 (download)
NetBeans C/C++ Pack 5.5 (download)
Cygwin (download)
开始实战:
1. 安装Cygwin
Cygwin程序作用是在windows平台上模拟一个unix shell环境,让gcc等unix工具能在windows上运行。
进入Cygwin安装包选择界面时选择gcc-core, gcc-g++, gdb,make这几项(所要依赖的程序包Cygwin程序会自动选中的)。如图下:
对了,还要配置一下环境变量,让命令行能找cygwin的程序。把cygwin的bin目录放入系统path中就OK了。
2. 在Netbean中新建一个java application,如:JavaJNIDemo。
内容可以如下:
/**
*
* @author Xiaofeng Wang
*/
public class Main {
public native int addTwoNumbers(int one, int two);
public native int multiplyTwoNumbers(int one, int two);
static {
System.load("D:\\NetBeans\\JNIDynamicLibraryDemo\\dist\\JNIDynamicLibraryDemo.dll");//动态链接库的位置
}
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Main main = new Main();
int num1 = 20;
int num2 = 50;
System.out.println(num1 + " + " + num2 + " = " + main。addTwoNumbers(num1, num2));
System.out.println(num1 + " * " + num2 + " = " + main。multiplyTwoNumbers(num1, num2));
}
}
3. 接着要生成头文件
在命令行中用javah程序生成上面java文件的头文件。
命令格式如下:
javah -o d:\ JNIDemoNative.h –jni -classpath
<projects_root></projects_root>
\JavaJNIDemo\build\classes javajnidemo.Main
完成后在D盘根目录下会找到JNIDemoNative。h文件,内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class javajnidemo_Main */
#ifndef _Included_javajnidemo_Main
#define _Included_javajnidemo_Main
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: javajnidemo_Main
* Method: addTwoNumbers
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_javajnidemo_Main_addTwoNumbers
(JNIEnv *, jobject, jint, jint);
/*
* Class: javajnidemo_Main
* Method: multiplyTwoNumbers
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_javajnidemo_Main_multiplyTwoNumbers
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
4. 安装配置NetBeans C/C++ Pack 5.5插件
安装完NetBeans C/C++ Pack 5.5插件后,新建一个C/C++项目(如:JNIDynamicLibraryDemo),并配置项目属性如下:
还要配置编译参数:
内容为-mno-cygwin -Wl,--add-stdcall-alias -shared -m32
-mno-cygwin 让编译出来的DLL不依赖cygwin
-Wl,--add-stdcall-alias 不使用此参数会出现链接错误
-shared 生成动态库
-m32 编译为32位程序
还要配置dll的输出名称(如:JNIDynamicLibraryDemo.dll)
把上一步中生成的头文件导入到项目中,并新建JNIDynamicLibraryDemo.c文件,内容如下:
#include "JNIDemoNative.h"
JNIEXPORT jint JNICALL Java_javajnidemo_Main_addTwoNumbers(JNIEnv * env, jobject obj, jint one, jint two) {
return (one + two);
}
JNIEXPORT jint JNICALL Java_javajnidemo_Main_multiplyTwoNumbers(JNIEnv * env, jobject obj, jint one, jint two) {
return (one * two);
}
5. 编译并运行项目
编译c项目,并输出dll,核对java项目中dll的路径是否正确,如正确运行项目。结果如下:
到此完成。
参考资料:
Beginning JNI with NetBeans™ C/C++ Pack 5.5
《Java高级编程:JDK5》
分享到:
相关推荐
3. **windows**:指明该软件是为Windows操作系统设计的,用户可以在Windows环境下使用NetBeans进行Java开发。 【压缩包子文件的文件名称列表】: 1. **com**:这个目录通常包含了Java的包结构,其中的类文件代表了...
本文将详细讲解如何使用Netbeans集成开发环境(IDE)以及Microsoft的Visual Studio来调试JNI应用程序。 首先,我们需要理解JNI的基本概念。JNI为Java程序员提供了一个标准的接口,让他们能够调用本地(非Java)代码...
本文将详细介绍如何在NetBeans环境中使用JNI来编写Java代码调用DLL。 首先,理解JNI的概念至关重要。JNI是Java开发工具包(JDK)的一部分,它为Java开发者提供了一套API,使得可以编写能够直接调用本地方法(如C/...
2. **Java开发环境**:开发Java程序通常需要安装Java Development Kit (JDK),它包含了编译器javac和Java运行时环境。此外,IDE(集成开发环境)如Eclipse、IntelliJ IDEA或NetBeans能提供代码编辑、调试和构建等...
在开发Java应用程序与TTP-244Pro打印机交互时,通常需要借助特定的打印机驱动。在提供的压缩包中,"TSC_Windows_DLL"可能包含的就是用于Windows操作系统的TTP-244Pro打印机驱动动态链接库(DLL)文件。这些DLL文件...
在实际使用过程中,安装Java环境时需要注意操作系统兼容性,如Windows、Mac OS或Linux等。安装IDE时需根据个人喜好和项目需求选择合适的版本,例如社区版或专业版。对于PHP调用Java,需要确保PHP和Java环境都正常...
总的来说,这个项目提供了一个实用的例子,展示了如何在Java环境中集成和使用TTS技术,尤其是当需要与特定操作系统(如Windows)的原生语音库交互时。通过研究这个源代码,开发者可以学习到如何利用Java的跨平台能力...
同时,为了开发和测试Java程序,开发人员通常还需要安装集成开发环境(IDE),如Eclipse、IntelliJ IDEA或NetBeans,这些IDE能够与JDK集成,提供更方便的开发体验。 总的来说,JDK 7u15是Java开发的关键工具,它的...
Java Development Kit(JDK)是Oracle公司提供的用于开发和运行Java应用程序的重要工具集。这个"jdk-12.0.2_windows-x64_bin.rar"压缩包文件包含了适用于Windows 64位系统的JDK 12.0.2版本。在Java编程中,JDK扮演着...
OVJ-0.971-MSWin-源码.rar 是一个包含源代码的压缩文件,主要用于在Microsoft ...对于Java开发者来说,分析和学习这样的源码可以提升编程技巧,理解项目架构,以及了解如何在Windows环境中开发和部署Java应用程序。