问题描述
我正在尝试使用JNI和JDK9.我有一个类NativeTest.java
,看起来像这样:
I'm trying to experiment with using the JNI and JDK 9. I have a class NativeTest.java
that looks like this:
public class NativeTest {
static {
System.loadLibrary("hello");
}
private native void sayHello();
public static void main(String[] args) {
new NativeTest().sayHello();
}
}
我编译该类,然后使用javah NativeTest
生成头文件.
I compile the class, then use javah NativeTest
to generate the header file.
发布javah
时,我收到此警告:
Upon issuing javah
, I get this warning:
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版本还需要很长时间,但是我认为我现在将开始习惯这个新选项.
I know it'll be quite a while before the next major JDK release, but I figured I'd start getting used to this new option now.
因此,尝试使用javac -h NativeTest.java
(以及其他变体,例如NativeTest
,NativeTest.class
等)时,我总是收到此错误:
So upon trying javac -h NativeTest.java
(and other variations like NativeTest
, NativeTest.class
, etc.) I keep getting this error:
javac: no source files
我无法在线找到任何帮助,可能是因为此功能是相对较新的,并且在手册页中找不到关于此新-h
选项的任何信息.
I haven't been able to find any help online, probably because this feature is relatively new, and I can't find anything about this new -h
option in the man page.
还有其他人尝试吗?我想念什么?
Anyone else try this yet? What am I missing?
推荐答案
我发现的解决方案是我没有指定javac
放置头文件的目录.
The solution I discovered was that I was not specifying the directory where javac
should place the header files.
执行javac -h . NativeTest.java
成功.
这篇关于javac“无源文件"使用-h选项时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!