我正在尝试使用jni和jdk 9。我有一个班级,看起来是这样的:

public class NativeTest {

    static {
        System.loadLibrary("hello");
    }

    private native void sayHello();

    public static void main(String[] args) {
        new NativeTest().sayHello();
    }
}

我编译这个类,然后使用NativeTest.java生成头文件。
在发出javah NativeTest时,我收到以下警告:
Warning: The javah tool is planned to be removed in the next major
JDK release. The tool has been superseded by the '-h' option added
to javac in JDK 8. Users are recommended to migrate to using the
javac '-h' option; see the javac man page for more information.

我知道下一个主要的jdk版本还需要很长时间,但我想我现在应该开始习惯这个新选项了。
因此,在尝试javah(以及其他变体,如javac -h NativeTest.javaNativeTest,等等)时,我一直得到这个错误:
NativeTest.class
我在网上找不到任何帮助,可能是因为这个功能比较新,而且我在手册页上找不到关于这个新的javac: no source files选项的任何信息。
还有人试过这个吗?我错过了什么?

最佳答案

我发现的解决方案是,我没有指定javac应该放头文件的目录。
执行javac -h . NativeTest.java有效。

08-06 06:07