我正在尝试通过命令行生成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);
有人知道如何解决这个问题吗?
感谢
答案 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\
请注意,我混合使用了指定类路径和限定类名称的方法。