javah -jni <classname>不工作?

时间:2017-04-30 20:32:25

标签: java c java-native-interface javah

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

library(data.table)
setDT(dat)[,mean(value),group]

#    group          V1
# 1:     a  0.05444944
# 2:     c -0.04324673
# 3:     b -0.16894993

当然在做完

之后
javah -jni MyClass

它没有给我任何错误消息......

但是每当我执行javac MyClass.java 命令时,我都会收到以下错误:

javah -jni

顺便说一句,我正在使用Windows 10 PC

1 个答案:

答案 0 :(得分:0)

看看MyClass中定义的包。可能是你正在使用一些包名,然后你只传递类名 - 这不起作用。

确保通过CLASSPATH提供课程。

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

看看这里:

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

你可以找到完全有效的晚餐简单样本。

它应该开箱即用。只是做:

git clone https://github.com/mkowsiak/jnicookbook.git
cd jnicookbook/recipeNo001
make; make test

如果你这里仍有问题。可能是您的安装不太合适。

如果它适合您,只需确保使用Makefile

中可以找到的类似编译标志

与JNI玩得开心:)

<强> 更新

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

如果使用Oracle的JDK,则不会出现这种问题。您可以使用javah

轻松生成C头

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

javah -jni -cp . Main