在linux上使用javah

 2023-01-20    322  

问题描述

我在JNI上有一个简单的类,我需要将其导出到标题文件(.h).

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

在linux上使用javah

javah -jni com.main_package.NativeClass

在Windows上它可以正常工作,但是在我的主操作系统(Linux)上效果不佳.它一直告诉它找不到课程.我试图使用命令的许多组合并在许多可能的路径上运行,但它不起作用.我关注了许多教程和网站(包括此处),并尝试了它们的组合.

我什至尝试使用eclipse的外部工具为此,如

我看起来像这样的错误:

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. 对于控制台,请转到”>

    javah -jni com.main_package.nativeclass

  2. 对于Eclipse,请使用我给出的链接,而是使用${project_loc}/bin/使用${project_loc}/bin/classes/,然后在包装浏览器中,转到nativeclass.java,然后运行外部工具.输出将与Java文件相同的路径.

  3. 推荐答案

    您不转到项目的src文件夹,而是您编译的 .class 文件的根(其中com子文件夹存在或创建). javah正在寻找编译的类,而不是您的源文件.如果您只是手动运行javac,则类文件将与原始资源相同的位置.然后,语句”转到SRC文件夹”是正确的.但是,如果您有Eclipse的项目或使用ANT或其他项目,则类可能在完全不同的位置 – 取决于您的项目的设置.我猜想您的窗户和Linux上的日食项目的设置不同.

    其他推荐答案

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

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

以上所述是小编给大家介绍的在linux上使用javah,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25939.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。