本文转载总结至 http://www.cnblogs.com/mandroid/archive/2011/06/15/2081093.html
不得不承认以前的开发人员的功底确实挺深的
1 /** 2 * 3 */ 4 package com.magc.jni; 5 6 /** 7 * @author magc 8 * 9 */ 10 public class HelloWorld { 11 12 static { 13 14 System.loadLibrary( " Hello " ); 15 16 } 17 18 public native void DisplayHello(); 19 /** 20 * @param args 21 */ 22 public static void main(String[] args) { 23 24 new HelloWorld().DisplayHello(); 25 } 26 27 }
1 /* DO NOT EDIT THIS FILE - it is machine generated */ 2 #include < jni.h > 3 /* Header for class com_magc_jni_HelloWorld */ 4 5 #ifndef _Included_com_magc_jni_HelloWorld 6 #define _Included_com_magc_jni_HelloWorld 7 #ifdef __cplusplus 8 extern " C " { 9 #endif 10 /* 11 * Class: com_magc_jni_HelloWorld 12 * Method: DisplayHello 13 * Signature: ()V 14 */ 15 JNIEXPORT void JNICALL Java_com_magc_jni_HelloWorld_DisplayHello 16 (JNIEnv * , jobject); 17 18 #ifdef __cplusplus 19 } 20 #endif 21 #endif
#include < jni.h > #include " com_magc_jni_HelloWorld.h " #include < stdio.h > JNIEXPORT void JNICALL Java_com_magc_jni_HelloWorld_DisplayHello (JNIEnv * env, jobject obj) { printf( " From jni_helloworldImpl.cpp : " ); printf( " Hello world ! \n " ); return ; }
有可能出现如下的类似错误
E:\>javah HelloWorld
错误:无法访问 HelloWorld
错误的类文件: .\HelloWorld.class
类文件包含错误的类: nc.bs.ct.nreport.test.HelloWorld
请删除该文件或确保该文件位于正确的类路径子目录中。
com.sun.tools.javac.util.Abort
at com.sun.tools.javac.comp.Check.completionError(Check.java:162)
at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:147)
at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:77)
at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:159
)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330)
at com.sun.tools.javadoc.Start.begin(Start.java:128)
at com.sun.tools.javadoc.Main.execute(Main.java:66)
at com.sun.tools.javah.Main.main(Main.java:147)
javadoc: 错误 - 致命错误
2 错误
解决方法
上边的提示无法访问文件。接下来返回到上级的包目录中,也就是说的包目录class文件的上级路径,通过javah编译.h头文件,将会在bin中生成已.h结尾的文件。