首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javah -jni <classname>不工作了吗?

javah -jni <classname>不工作了吗?
EN

Stack Overflow用户
提问于 2017-05-01 04:32:25
回答 1查看 601关注 0票数 0

我一直在尝试使用以下命令创建一个.h文件:

代码语言:javascript
复制
javah -jni MyClass

当然,在做完之后

代码语言:javascript
复制
javac MyClass.java

这不会给我任何错误信息...

但是,每当我执行javah -jni命令时,我就会得到以下错误:

代码语言:javascript
复制
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 PC上工作

EN

回答 1

Stack Overflow用户

发布于 2017-05-01 14:16:34

看一下在MyClass中定义的包。这可能是因为你使用了一些包名,然后你只传递了类名--这是行不通的。

确保该类可通过CLASSPATH使用。

或者,您可以通过javah的-cp参数传递类位置(与包一起)。

看看这里:

http://jnicookbook.owsiak.org/recipe-No-001/

你可以在那里找到完全工作的,超级简单的样本。

它应该开箱即用。只需这样做:

代码语言:javascript
复制
git clone https://github.com/mkowsiak/jnicookbook.git
cd jnicookbook/recipes/recipeNo001
make; make test

如果你还有问题的话。可能是您的安装不太正常。

如果它对您有效,只需确保使用与您可以在Makefile中找到的相似的编译标志

享受JNI带来的乐趣:)

更新:

正如上面评论中所指出的,也许您可以切换到Oracle的JDK?

如果使用Oracle的JDK,就不会出现这种问题。您可以使用javah轻松地生成C标头

如果您必须坚持使用GCJ (例如,遗留代码),可以尝试使用

代码语言:javascript
复制
javah -jni -cp . Main
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43711036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档