织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>JAVA>

JNI初步:使用Java提取平台,硬件相关信息 c++ java混合编程

jackyhwei 发布于 2012-02-07 09:09 点击:次 
最近好几个朋友问我怎样通过Java获得系统硬件相关信息,比如CPU频率,占 用,内存大小,磁盘大小,MAC地址等等,正常的Java SDK没法提供这些功能,只能通过JNI来实现。这里就写一下大致的步骤,希望能帮助那些想系统性掌握类似平台相关信息获取的开发方法。
TAG:

最近好几个朋友问我怎样通过Java获得系统硬件相关信息,比如CPU频率,占 用,内存大小,磁盘大小,MAC地址等等,正常的Java SDK没法提供这些功能,只能通过JNI来实现。这里就写一下大致的步骤,希望能帮助那些想系统性掌握类似平台相关信息获取的开发方法。如果你想完整的看 下去,最好需要知道以下几点:

  • 有一定的C/C++开发基础
  • 熟悉Windows的API机制(win32)
  • 了解Java Native Interface(JNI)

开发一个JNI应用一般分为两个 两个部分,Java接口和C/C++实现,这里为了方便,我们将使用C++,因为Windows的普遍性,这里使用Windows作为Java的安装平台。下面首先从Welcome演示这两步骤。

1 Welcome示例

welcome示例非常简单,传入一个String参数,响应一个字符串,比如参数为 "令狐冲",响应结果为" 欢迎 令狐冲 同学"。

1.1 定义Java接口

使用Eclipse创建一个工程,接着创建一个类,如下图:

  1. package com.lifesting.jni; 
  2.  
  3. public class SysInfo { 
  4.     public native String welcome(String who); 
1.2 生成JNI头文件

打开命令行,使用javah程序(%JAVA_HOME%\bin\javah)生成JNI头文件,比如:

javah -classpath ./bin com.lifesting.jni.SysInfo

这将会在目录下生成一个com_lifesting_jni_SysInfo.h的头文件,里面申明了Java welcome方法声明对应的C 声明

  1. JNIEXPORT jstring JNICALL Java_com_lifesting_jni_SysInfo_welcome 
  2.    (JNIEnv *, jobject, jstring); 
1.3 创建JNI实现工程

为了体验一把c++0x,我机器上装的是Visual Studio 2010 ,这个工程并没有使用到VS 2010的特性,2005、2008、2010基本差不多。

通过菜单new一个为win32 console application project,将application type设置为dll选项,去除掉MFC和ATL,因为只需要用到Windows SDK。其它默认。 创建完毕之后添加java开发的头文件和库文件。

1.3.1 添加头文件

打开项目属性页,点击Configuration Properties -> C/C++ ->General,在Additional Include Directories中输入两条

$(JAVA_HOME)\include

$(JAVA_HOME)\include\win32

1.3.2 添加库文件

打开项目属性页,点击Configuration Properties -> Linker -> General,在Additional Library Directories中输入一条

$(JAVA_HOME)\lib

仅接着选择 Configuration Properties -> Linker -> Input,在Additional Dependencies中输入两条

jvm.lib

jawt.lib(这个是awt的native接口,可以不用)

.....省略N个字......

(cr0_3)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201202/15662.html]
本文出处:百度博客 作者:cr0_3 原文
顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容