各位大大侠:
    我用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里面怎么写?这么写肯定编译都不回通过的~小弟才疏学浅,望各位指教。怎么定义这个方法和调用它?谢谢了

解决方案 »

  1.   

    ShowMessage.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