我正在尝试使用JNI和JDK9。我有一个NativeTest.java类,看起来像这样:

public class NativeTest {

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

    private native void sayHello();

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

我编译该类,然后使用javah NativeTest生成头文件。

发出javah时,我收到此警告:
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版本还需要很长时间,但是我认为我现在将开始习惯这个新选项。

因此,在尝试javac -h NativeTest.java(以及其他变体,例如NativeTestNativeTest.class等)时,我不断收到此错误:
javac: no source files
我一直无法在线找到任何帮助,可能是因为此功能是相对较新的,并且在手册页中找不到关于此新-h选项的任何信息。

还有其他人尝试吗?我想念什么?

最佳答案

我发现的解决方案是我没有指定javac应该放置头文件的目录。

执行javac -h . NativeTest.java工作正常。

关于使用-h选项时的javac "no source files",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46577196/

10-10 18:40