我正在尝试使用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.java
,NativeTest
,等等)时,我一直得到这个错误:NativeTest.class
我在网上找不到任何帮助,可能是因为这个功能比较新,而且我在手册页上找不到关于这个新的
javac: no source files
选项的任何信息。还有人试过这个吗?我错过了什么?
最佳答案
我发现的解决方案是,我没有指定javac
应该放头文件的目录。
执行javac -h . NativeTest.java
有效。