Javah相关错误,如下图所示:

解决办法:

用javah生成java调用C++语言用的头文件时出错;首先简单地介绍javah命令的使用

假设我们已经有了这个类,准备用它生成调用C语言的头文件。另外,这个Java文件是在路径“f:\workspace\HelloWorld\src”下,包“package cn.nlp.demo;”中的

package cn.nlp.demo;

class HelloWorld {
    
    public native void displayHelloWorld(); // 一个外部实现的方法
    static {
        System.loadLibrary("hello"); // 声明所调用的库名称hello.dll
    }
    public static void main(String[] args) {
        new HelloWorld().displayHelloWorld();
    }
    
}

1、首先我们要编译一下这个类,以便得到类对应的*.class

在目录“f:\workspace\HelloWorld\src\cn\nlp\demo”下执行命令

javac Helloworld.java

即可生成Helloworld.class文件在当前目录下以及“f:\workspace\HelloWorld\bin\cn\nlp\demo”下。

2、javah命令编写

f:\workspace\HelloWorld\bin>javah -classpath . -jni cn.nlp.demo.HelloWorld

javah中各个参数的意思分别为:

如果没有配置环境变量中classpath的位置的话,或者不知道怎么配置的话,就一定要在工程的根目录下执行javah命令

注意到我们的命令符的执行位置是源代码目录“f:\workspace\HelloWorld\bin>”

-classpath  后面的路径是指包“cn.nlp.demo”所在的根路径(如下图所示)

-jni 后面的路径是“包名+类名”

3、最终生成的C++头文件的位置和代码

05-11 22:45