【发布时间】:2017-04-30 20:32:24
【问题描述】:
我一直在尝试使用以下命令创建一个 .h 文件:
javah -jni MyClass
当然在做之后
javac MyClass.java
这不会给我任何错误消息...
但是,每当我执行 javah -jni 命令时,我都会收到以下错误:
Exception in thread "main" java.io.IOException: can't find class file
MyClass.class in
java.net.URLClassLoader{urls=[file:/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre/lib/rt.jar],
parent=gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}}
at gnu.classpath.tools.javah.Main.getClass(libgcj-tools.so.14)
at gnu.classpath.tools.javah.Main.parseClasses(libgcj-tools.so.14)
at gnu.classpath.tools.javah.Main.run(libgcj-tools.so.14)
at gnu.classpath.tools.javah.Main.main(libgcj-tools.so.14)
顺便说一下,我正在使用 Windows 10 电脑
【问题讨论】:
-
1.您使用的是什么
javah命令行? 2. 你的课在包里吗? 3. 你为什么使用 GNU CLASSPATH?它像门钉一样死了。让它安息吧。使用 JDK。 -
1.我只是在编译 MyClass.java 后直接键入 `javah -jni MyClass 2. 我的类不在包中 3. 我什至不知道我使用的是 GNU CLASSPATH,请赐教
-
查看堆栈跟踪中的类名。 GNU CLASSPATH 是 FSF 提供开源 Java 的一次失败且注定失败的尝试。他们甚至从未完成 1.2,但由于某种原因,二十年后它仍然存在于 Linux 发行版中。删除它并安装 JDK。为什么堆栈跟踪中的类名与命令行中的类名不同?你编译了吗?
-
关于堆栈跟踪中的不同类名,我只是复制了错误的错误。我确实编译了它...你介意解释如何删除 GNU CLASSPATH 吗?请原谅我在这方面完全是初学者
-
我不知道。我猜想与RPM有关,但不要引用我的话。运行
javah时的.class文件在当前目录吗?
标签: java c java-native-interface javah