我是Java学习的新手,第一次想开始学习JNI。我正在使用Cygwin,我已经创建了一个扩展名为.java (Helloworld.java)的文件,如下所示:
class HelloWorld {
private native void print();
public static void main(String[] args) {
new HelloWorld().print();
}
static {
System.loadLibrary("HelloWorld");
}
}然后我通过命令行(javac Helloworld.java)编译该文件,然后通过命令javah –jni Helloworld创建一个本地头文件,然后也通过创建一个C文件来实现,如下所示:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}之后,当我运行该命令时
Gcc –wall –g Helloworld.c –o hello 在Cygwin的命令提示行中提供消息
helloworld.c:1:17: fatal error: jni.h: No such file or directory
compilation terminated.如何运行,设置执行文件的路径的过程是什么?请帮助我任何人。谢谢。
发布于 2012-06-22 18:44:52
我猜您还没有将jni目录添加到包含目录列表中,有关详细信息,请查看http://social.msdn.microsoft.com/forums/is/vclanguage/thread/cd7f2d1d-f750-494c-a3b2-7d4186cfe51c。
发布于 2012-06-22 18:44:59
假设您已经安装了JDK,那么您需要将JNI的includes目录告知gcc:
-I$JAVA_HOME/../include其中,应将$JAVA_HOME设置为bin目录的父目录(例如,我机器上的/usr/lib/jvm/java-6-openjdk-amd64/jre)。如果没有设置,那么只要找到jni.h头所在的文件夹就更简单了。
我同意从JNI开始学习Java是一项艰巨的任务,但我尊重您的决定。如果你喜欢时尚书籍,我会推荐Core Java Volume I和Core Java Volume II。特别是在后者的末尾,您可以找到关于本机方法的非常详尽的介绍。
发布于 2013-08-10 05:41:47
我在Windows上用的是MinGW。在将“;C:\MinGW\”添加到Path环境变量后,我可以使用以下命令从Windows命令提示符运行gcc.exe。
jni.h文件位于java home include文件夹中。您可以使用JAVA_HOME环境变量或显式指定。
gcc -c -I"C:\Program Files\Java\jdk1.6.0_26\include" -I"C:\Program Files\Java\jdk1.6.0_26\include\win32" "S:\Accessibility\tools\src\test\java\com\accessibility\HelloWorld.c"这将创建一个HelloWorld.o文件。
https://stackoverflow.com/questions/11154020
复制相似问题