我有一个在 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 上的 Eclipse 项目和 Linux 上的 Eclipse 项目的设置是不同的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)