使用-h选项时,javac“没有源文件”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用-h选项时,javac“没有源文件”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1709字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试使用JNI和JDK 9.我有一个类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(以及其他变体,如NativeTest,NativeTest.class等)时,我不断收到此错误:
javac:没有源文件
我无法在网上找到任何帮助,可能是因为这个功能相对较新,我在手册页中找不到任何关于这个新-h选项的信息.
其他人试试这个吗?我错过了什么?
解决方法:
在Java 8中,您必须进行生成类文件的中间步骤以获取C头
让我们说你有以下结构
recipeNo001
├── Makefile
├── README.md
├── c
│?? └── recipeNo001_HelloWorld.c
├── java
│?? └── recipeNo001
│?? └── HelloWorld.java
├── lib
└── target
在Java(JDK 9之前)中,您必须编译类并使用带编译源的javah
> export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0_11)
> ${JAVA_HOME}/bin/javac -d target java/recipeNo001/*.java
> ${JAVA_HOME}/bin/javah -d c -cp target recipeNo001.HelloWorld
# -d c -> put generated codes inside c directory
# -cp target -> compiled classes are inside target dir
在Java 9中,您可以将javac -h与Java源代码一起使用
> export JAVA_HOME=$(/usr/libexec/java_home -v 9)
> ${JAVA_HOME}/bin/javac -h c java/recipeNo001/HelloWorld.java
# -h c -> create header file inside c directory
内容总结
以上是互联网集市为您收集整理的使用-h选项时,javac“没有源文件”全部内容,希望文章能够帮你解决使用-h选项时,javac“没有源文件”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。