【发布时间】: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