生成JNI头文件时出错

时间:2013-01-18 15:32:52

标签: java c++ java-native-interface

我正在尝试通过命令行生成JNI头文件。当我 输入javah myclass.class,错误是

Exception in thread main java.IllegalArgumentException: not a valid class name
at com.sun.tools.javac.api.JavacTool.getTask<JavacTool.java:177>
at com.sun.tools.javac.api.JavacTool.getTask<JavacTool.java:68>
at com.sun.tools.javah.api.JavachTask.run<JavahTask.java:509>
at com.sun.tools.javah.api.JavachTask.run<JavahTask.java:335>
at com.sun.tools.javah.Main.main<Main.java:46>

但是当我输入javah myclass

错误:找不到'myclass'

的类文件

以前,当我在我的类目录中输入ls时,类文件就存在了。

这是我的代码段

package com.blablabla

public static native long myclass(long n);

有人知道如何解决这个问题吗?

感谢

5 个答案:

答案 0 :(得分:1)

可能你应该尝试给出完全合格的班级名称: -

javah com.blablabla.myclass

答案 1 :(得分:1)

类名以小写字符开头,尝试使用大写,这是Java中的强制约定。另外,请尝试指定完全限定名称(列出由.分隔的所有包)

答案 2 :(得分:0)

摆脱参数的.class部分。参数是完全限定的类名,不是文件名。见Javadoc。

答案 3 :(得分:0)

获取完全合格的类名称是一个巨大的痛苦。如果您想编写自己的解决方案,则可以看看set of scripts I wrote to deal with this headache还是the script that deals with this particular problem

答案 4 :(得分:0)

我打开了cmd窗口(很明显是Windows),然后从包含javah.exe的文件夹中键入

javah -classpath C:\my\project\path\PackageDirectory\packagename\build\tmp\kotlin-classes\debug com.company.package.MyKotlinClass

MyKotlinClass.class文件位于文件夹

C:\my\project\path\PackageDirectory\packagename\build\tmp\kotlin-classes\debug\com\company\package\

请注意,我混合使用了指定类路径和限定类名称的方法。