android – 在linux上使用javah

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

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

javah -jni com.main_package.NativeClass 

在Windows上它工作正常,但在我的主要操作系统(Linux)上却没有.它一直在告诉它无法找到班级.我试图使用该命令的许多组合并在许多可能的路径上运行它,但它不起作用.我已经关注了很多教程和网站(包括这里)并尝试了他们的组合.

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

我得到的错误看起来像这样:

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 /,然后,在包浏览器中,转到NativeClass.java,并运行外部工具.输出将与java文件的路径相同.

最佳答案
您没有转到项目的src文件夹,而是转到已编译的.class文件的根目录(其中存在或创建了com子文件夹). javah正在寻找编译的类,而不是你的源文件.如果您只是手动运行javac,则类文件将与原始源位于同一位置.然后声明“转到src文件夹”是正确的.但是,如果您在Eclipse中有项目或使用ant或其他东西,则类可能位于完全不同的位置 – 具体取决于项目的设置方式.我猜想你的Windows和Linux上的Eclipse项目设置不同.

转载注明原文:android – 在linux上使用javah - 代码日志