我有一个用于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上工作,每次需要使用这个工具时,我都不想切换操作系统。
以下是正确的答案:
javah -jni com.main_package.NativeClass
${project_loc}/bin/classes/代替${project_loc}/bin/,然后在package中,转到NativeClass.java,并运行外部工具。输出将与java文件的路径相同.。
发布于 2012-06-21 10:54:01
您不会转到项目的src文件夹,而是已编译的.class文件的根目录(在那里存在或创建com子文件夹)。javah正在寻找编译后的类,而不是源文件。如果您只是手动运行javac,类文件将位于与原始源相同的位置。然后,“转到src文件夹”的语句是正确的。但是,如果您在Eclipse中有一个项目,或者使用ant之类的,那么类可能位于完全不同的位置--这取决于您的项目是如何设置的。我想,Windows上的Eclipse项目和Linux上的Eclipse项目设置不同。
发布于 2013-09-21 05:26:50
您不必在类文件上使用javah。您可以在源文件(.java)上直接使用javah生成本机C/++签名(头)文件。例如:
javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar;. com.test.JniTesthttps://stackoverflow.com/questions/11135720
复制相似问题