2

我正在尝试通过命令行生成 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);

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

谢谢

4

5 回答 5

2

可能你应该尝试给出完全限定的类名: -

javah com.blablabla.myclass
于 2013-01-18T15:34:29.067 回答
1

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

于 2013-01-18T15:34:47.633 回答
0

摆脱论点的 .class 部分。参数是完全限定的类名,而不是文件名。请参阅 Javadoc。

于 2013-01-18T23:22:56.323 回答
0

获得完全限定的类名是一个巨大的痛苦。如果您想编写自己的解决方案,您可以查看我为解决这个问题而编写的脚本集,或者只是处理这个特定问题的脚本。

于 2019-03-26T20:51:50.647 回答
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\

注意,我混合使用了指定类路径和限定类名。

于 2019-06-10T11:39:49.883 回答