微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在linux上使用javah

我有一个简单的类使用JNI,我需要导出到头文件(.h)。

我读过,我需要使用javah命令,转到项目的src文件夹,然后键入:

javah -jni com.main_package.NativeClass

在Windows上,它工作正常,但在我的主要操作系统(Linux)上没有。 它一直告诉它找不到课程。 我试图使用命令的许多组合,并在许多可能的path上运行它,但它不起作用。 我跟随了很多教程和网站(包括这里),并尝试了他们的组合。

我甚至尝试过使用Eclipse的外部工具,如下所示,但它也显示了相同的错误

“Hello world”Android应用程序尽可能less的文件,没有IDE,只有文本编辑器

如何在Kali Linux上打开Android Studio

Android VpnService如何保护fd工作?

将android移植到自定义arm设备需要哪些知识/专业知识?

切换时崩溃活动

我得到的错误是这样的:

error: cannot access com.main_package.NativeClass class file for com.main_package.NativeClass not found javadoc: error - Class com.main_package.NativeClass not found. Error: No classes were specified on the command line. Try -help.

谁能帮帮我吗? 我真的很喜欢在Linux上工作,每次需要使用此工具时都不想切换操作系统。

这是正确的答案:

对于控制台,转到“bin / classes”文件夹并运行我用过的命令:

javah -jni com.main_package.NativeClass

对于eclipse,使用我给出的链接,而不是${project_loc}/bin/ use ${project_loc}/bin/classes/ ,然后在包资源pipe理器中,转到NativeClass.java,运行外部工具。 输出将与java文件的path相同。

Java简单的时间戳date转换

EOCD没有find,没有Zip,而安装apk没有来源

在qemu-arm中运行Android应用程序?

错误:jni.h:没有这样的文件或目录

瓢虫错误。 无法在密钥库中列出证书。 可能是因为通行证不正确。 (RuntimeError)

你不去到项目的src文件夹,而是编译的.class文件的根目录(其中com子文件夹存在或被创建)。 javah正在寻找编译的类,而不是你的源文件。 如果您只是手动运行javac ,则类文件将与原始源位于相同的位置。 然后声明“去src文件夹”是正确的。 但是,如果你在Eclipse中有一个项目,或者你使用ant或者其他的东西,这些类可能处于完全不同的位置 – 这取决于你的项目是如何设置的。 我猜测你的Windows和Linux上的Eclipse项目的设置是不一样的。

您不必在类文件上使用javah。 您可以直接在源文件(.java)上使用javah来生成本地C / ++签名(头文件)。 例如:

javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar;. com.test.JniTest

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐