欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用javah 找不到类文件的解决方法

程序员文章站 2022-05-24 17:58:15
尝试在java中调用c++代码,使用javah生成.h文件时,一直提示找不到类文件。 我在eclipse中新建工程,写自己java调用的代码: package com.tzy.c; public c...

尝试在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