尝试在Java中调用C++代码,使用javah生成.h文件时,一直提示找不到类文件。
我在Eclipse中新建工程,写自己Java调用的代码:
package com.tzy.c;
public class HelloWorld {
//声明本机类
public native void Hello();
public static void main(String[] args) {
HelloWorld hellWorld = new HelloWorld();
hellWorld.Hello();
}
//当装载类文件时执行一个的静态代码
static {
System.loadLibrary("hello");
}
}
注意:我这里的HelloWorld是放在com.tzy.c包中的(如果不放在包中,一般不会出现这种错误提示)。
先前我是这样做的(当然是错误的做法):
我使用命令提示符cd到我的.java源文件目录,我的是E:\EclipseWorkSpace\JavaC\src\com\tzy\c
然后我javac HelloWorld.java进行编译,当然这部没问题。
然后我javah HelloWorld就提示:错误:找不到'HelloWorld'的类文件
经过查资料,我发现javah后面应该是完整的类名。
正确的做法:
首先,使用命令提示符cd到.java源文件目录,使用javac进行编译
然后,cd到java项目的目录:E:\EclipseWorkSpace\JavaC\src
使用命令
这样就可以编译成功了
其实使用Eclipse,在bin目录下已经存在class文件,所以我们这样直接cd到E:\EclipseWorkSpace\JavaC\bin
然后执行javah com.tzy.c.HelloWorld也行。
最后会生成名为com_tzy_c_HelloWorld.h的头文件,内容如下:
#include
#ifndef _Included_com_tzy_c_HelloWorld
#define _Included_com_tzy_c_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT void JNICALL Java_com_tzy_c_HelloWorld_Hello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif