在JNI中使用它时出现Javah错误

kri*_*mar 43 java java-native-interface classpath

命令:

javah -jni JavaHowTo
Run Code Online (Sandbox Code Playgroud)

结果:

error: cannot access JavaHowTo 
class file for JavaHowTo not found

javadoc: error - Class JavaHowTo not found.
Error: No classes were specified on the command line.  Try -help.
Run Code Online (Sandbox Code Playgroud)

我已正确设置类路径,但我仍然收到此javah错误.

任何解决方案都会有所帮助.

Gle*_*len 81

尝试

javah -jni com.example.JavaHowTo
Run Code Online (Sandbox Code Playgroud)

com.example你的包裹在哪里

您还需要从包含的目录运行javah com/example/JavaHowTo.class

例如,如果您的结构是

/home/user/com/example/JavaHowTo.class
Run Code Online (Sandbox Code Playgroud)

从中运行javah

/home/user
Run Code Online (Sandbox Code Playgroud)


jan*_*kos 13

以下为我工作(Win7):

javah -classpath bin/classes -jni -d jni com.my.javaclass
Run Code Online (Sandbox Code Playgroud)

我从app主目录运行它.

问题出在子目录类中


dil*_*ig0 11

我每天都使用以下选项从构建脚本中成功使用javah:

javah -d <outputdir> -classpath <classpath> <fully_qualified_class>

哪里:

'outputdir' is the directory where to put the generated header file

'classpath' contains an absolute path to the directory containing your root package (as mentionned by Glen)

'fully_qualified_class' is the name of the class containing native methods without .class extension

-jni选项不是必需的(默认设置)

无论如何你应该检查你的类文件已经生成:你也很惊讶你得到了一个javadoc错误...


小智 9

我遇到了同样的错误并使用http://www.inonit.com/cygwin/jni/helloWorld/header.html链接我能够成功生成.h文件.我使用了以下命令

C:\Program Files\Java\jdk1.6.0_21\bin>javah -d C:\Prachi\Android\Workspace_QP_re
structure\HelloWorld\bin\example\jni -classpath C:\Prachi\Android\Workspace_QP_r
estructure\HelloWorld\bin example.jni.HelloWorld
Run Code Online (Sandbox Code Playgroud)

这里example.jni是我的包名,C:\Prachi\Android\Workspace_QP_re structure\是我的eclipse工作空间路径.

希望这对你有所帮助