设为首页 加入收藏

TOP

使用javah 找不到类文件的解决方法
2018-03-22 08:49:24 】 浏览:296
Tags:使用 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++中子类和父类之间的相互转化 下一篇唯一的雪花(Unique snowflakes,U..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目