使用javah 找不到类文件的解决方法
尝试在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
上一篇: C++怎么定义未知元素个数的数组?
下一篇: 羊肉汤要放胡椒粉吗
推荐阅读
-
联想Yoga 13 使用过程中网络中断找不到无线网络的解决方法
-
在python的WEB框架Flask中使用多个配置文件的解决方法
-
使用记事本打开Hosts文件修改后无法保存的解决方法
-
无法删除文件提示找不到指定文件导致文件无法删除的解决方法
-
C#中使用XmlDocument类来创建和修改XML格式的数据文件
-
使用中的文件删除不掉的愿意及解决方法
-
pydev使用wxpython找不到路径的解决方法
-
WindowsXP系统找不到Normal.dot文件的解决方法图文教程
-
C#_Excel数据读取与写入_自定义解析封装类_支持设置标题行位置&使用excel表达式收集数据&单元格映射&标题映射&模板文件的参数数据替换(第二版-增加深度读取和更新功能)
-
PHP封装的svn类使用内置svn函数实现根据svn版本号导出相关文件示例