各位大大侠:
我用java的jni调用c编译好的生成硬盘序列号的程序。网上的都基本差不多是一个模板。也都能出来。但是我没学过jni,就是临时调用下,所以语法方面可能不清楚。
网上急基本都是这样的。
本程序是用JNI技术实现的读取硬盘序列号
将ChenminDiskIDJoc.jar 加入环境变量
这两个文件放入window 文件夹 或者JDK的bin文件夹 或者你的应用文件夹
DiskID32.dll
DiskID.dll
public static String chenmin.io.DiskID.Factory() 返回硬盘厂家
public static String chenmin.io.DiskID.DiskID() 返回硬盘序列号
ChenminDiskIDTest.bat 将启动直接演示一个读取硬盘序列号的测试
测试读取硬盘序列号的源代码在ChenminDiskIDTest.jar中现在DiskID32.dll , DiskID.dll已经在我的path里面了。我也已经加载了类库。
System.loadLibrary("DiskID");
System.loadLibrary("DiskID32");就是下面2句话不知道怎么理解:
public static String chenmin.io.DiskID.Factory() 返回硬盘厂家
public static String chenmin.io.DiskID.DiskID() 返回硬盘序列号在java里面怎么写?这么写肯定编译都不回通过的~小弟才疏学浅,望各位指教。怎么定义这个方法和调用它?谢谢了
我用java的jni调用c编译好的生成硬盘序列号的程序。网上的都基本差不多是一个模板。也都能出来。但是我没学过jni,就是临时调用下,所以语法方面可能不清楚。
网上急基本都是这样的。
本程序是用JNI技术实现的读取硬盘序列号
将ChenminDiskIDJoc.jar 加入环境变量
这两个文件放入window 文件夹 或者JDK的bin文件夹 或者你的应用文件夹
DiskID32.dll
DiskID.dll
public static String chenmin.io.DiskID.Factory() 返回硬盘厂家
public static String chenmin.io.DiskID.DiskID() 返回硬盘序列号
ChenminDiskIDTest.bat 将启动直接演示一个读取硬盘序列号的测试
测试读取硬盘序列号的源代码在ChenminDiskIDTest.jar中现在DiskID32.dll , DiskID.dll已经在我的path里面了。我也已经加载了类库。
System.loadLibrary("DiskID");
System.loadLibrary("DiskID32");就是下面2句话不知道怎么理解:
public static String chenmin.io.DiskID.Factory() 返回硬盘厂家
public static String chenmin.io.DiskID.DiskID() 返回硬盘序列号在java里面怎么写?这么写肯定编译都不回通过的~小弟才疏学浅,望各位指教。怎么定义这个方法和调用它?谢谢了
public class ShowMessage
{
private native void ShowMessage(String msg); static
{
System.loadLibrary("MsgImpl");
} public static void main(String[] args)
{
ShowMessage app = new ShowMessage();
app.ShowMessage("Generated With JNI");
}
}[编辑] 编译ShowMessage.java
javac ShowMessage.java
[编辑] 生成头文件ShowMessage.h
javah -jni ShowMessage
生成的头文件如下: /* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ShowMessage */ #ifndef _Included_ShowMessage
#define _Included_ShowMessage
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: ShowMessage
* Method: ShowMessage
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_ShowMessage_ShowMessage
(JNIEnv *, jobject, jstring); #ifdef __cplusplus
}
#endif
#endif[编辑] ShowMessage.cpp
#include <jni.h>
#include <stdio.h>
#include "ShowMessage.h" extern "C" JNIEXPORT void JNICALL
Java_ShowMessage_ShowMessage(JNIEnv* env,
jobject, jstring jMsg)
{
const char* msg = env->GetStringUTFChars(jMsg,0);
print("JNI:%s\n", msg);
env->ReleaseStringUTFChars(jMsg, msg);
}[编辑] 生成ShowMessage.dll
vc编译方法如下: cl -I %JAVA_HOME%\include -I %JAVA_HOME%\include\win32 -LD ShowMessage.cpp -FeMsgImpl.dll
[编辑] 运行ShowMessage
java ShowMessage
or java ShowMessage -D java.library.path=[dll存放路径]
[编辑] 运行结果
JNI:Generated with JNI