【问题标题】:Error coming while creating header file for java native method为 java 本机方法创建头文件时出错
【发布时间】:2014-02-03 12:16:37
【问题描述】:

我正在尝试为 Android 应用程序中的 Java 本机方法创建头文件,以开发 JNI 接口。我在 java 文件中创建了本机方法。并运行android应用程序。现在我尝试使用 javah 命令创建头文件,例如 D:\workspace\Internet_TV4\bin>javah com.internet.videos.Internet_TV4 那么这个错误来了

error: cannot access com.internet.videos.Internet_TV4
class file for com.internet.videos.Internet_TV4 not found
javadoc: error - Class com.internet.videos.Internet_TV4 not found.
Error: No classes were specified on the command line.  Try -help.

其中 com.internet.videos 是包名,Internet_TV4 是类名。我之前已成功使用此命令为 sdk 旧版本创建了头文件。现在我正在使用最新版本的 android sdk,我得到了这种类型的错误。在较新的版本中,所有类文件都是在 \workspace\Internet_TV4\bin\classes\com\internet\videos 路径中创建的,所以我也尝试过该命令D:\workspace\Internet_TV4\bin>javah classes.com.internet.videos.Internet_TV4 但是我又遇到了一些错误,例如

error: cannot access classes.com.internet.videos.Internet_TV4
bad class file: .\classes\com\internet\videos\Internet_TV4.class
class file contains wrong class: com.internet.videos.Internet_TV4
Please remove or make sure it appears in the correct subdirectory of the classpa
th.
com.sun.tools.javac.util.Abort
        at com.sun.tools.javac.comp.Check.completionError(Check.java:164)
        at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149)
        at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:77)
        at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:159
)
        at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330)
        at com.sun.tools.javadoc.Start.begin(Start.java:128)
        at com.sun.tools.javadoc.Main.execute(Main.java:66)
        at com.sun.tools.javah.Main.main(Main.java:147)
javadoc: error - fatal error

所以我无法创建头文件。任何人都可以帮我解决这个问题。

提前谢谢你

【问题讨论】:

  • 你可以手动创建你的头文件吗? JNI 函数的命名约定相当简单。您可以查看 NDK 中的 hello-jni 示例。
  • 我认为您在 Andorid 中使用本机代码的步骤非常老旧,为什么不按照 Android-NDK 的步骤操作,它很容易使用。此链接将帮助您开始使用本机代码。 mindtherobot.com/blog/452/…
  • 你能检查一下你在课程包中提到的内容吗?
  • @Alex 感谢您的回复。我手动创建了文件并解决了我的问题...

标签: android java-native-interface


【解决方案1】:

我遇到了同样的问题,在运行 javah -help 后发现了它

您需要使用-classpath 选项设置类路径。在要输出头文件的文件夹中,运行:

javah -classpath D:\workspace\Internet_TV4\bin\classes\ com.internet.videos.Internet_TV4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多