首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux上使用javah

在linux上使用javah
EN

Stack Overflow用户
提问于 2012-06-21 09:56:02
回答 2查看 4.6K关注 0票数 3

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

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

代码语言:javascript
复制
javah -jni com.main_package.NativeClass 

在windows上,它工作得很好,但是在我的主要操作系统(Linux)上却不工作,它总是告诉我们它找不到类。我尝试使用这个命令的许多组合,并在许多可能的路径上运行它,但是它没有工作。我遵循了许多教程和网站(包括这里),并尝试了他们的组合也。

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

我得到的错误如下:

代码语言:javascript
复制
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上工作,每次需要使用这个工具时,我都不想切换操作系统。

以下是正确的答案:

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

javah -jni com.main_package.NativeClass

  • for eclipse,使用我给出的链接,但是使用${project_loc}/bin/classes/代替${project_loc}/bin/,然后在package中,转到NativeClass.java,并运行外部工具。输出将与java文件的路径相同.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-21 10:54:01

您不会转到项目的src文件夹,而是已编译的.class文件的根目录(在那里存在或创建com子文件夹)。javah正在寻找编译后的类,而不是源文件。如果您只是手动运行javac,类文件将位于与原始源相同的位置。然后,“转到src文件夹”的语句是正确的。但是,如果您在Eclipse中有一个项目,或者使用ant之类的,那么类可能位于完全不同的位置--这取决于您的项目是如何设置的。我想,Windows上的Eclipse项目和Linux上的Eclipse项目设置不同。

票数 3
EN

Stack Overflow用户

发布于 2013-09-21 05:26:50

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

代码语言:javascript
复制
javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar;. com.test.JniTest
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11135720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档