Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 致命错误:jni.h:没有这样的文件或目录_Java_C_Interface_Native - Fatal编程技术网

Java 致命错误:jni.h:没有这样的文件或目录

Java 致命错误:jni.h:没有这样的文件或目录,java,c,interface,native,Java,C,Interface,Native,我正在尝试在Windows上重新创建此教程: 当我试图编译它时,我得到以下错误: fatal error: jni.h: No such file or directory #include <jni.h> compilation terminated. 我在所有文件所在的文件夹中编译 我确信此文件夹中的文件“jni.h”位于: C:\Program Files\Java\jdk1.7.0_45\include 有人知道为什么导入语句不起作用吗 谢谢 下划线与空格不同。如

我正在尝试在Windows上重新创建此教程:

当我试图编译它时,我得到以下错误:

fatal error: jni.h: No such file or directory

 #include <jni.h>

compilation terminated.
我在所有文件所在的文件夹中编译

我确信此文件夹中的文件“jni.h”位于:

C:\Program Files\Java\jdk1.7.0_45\include
有人知道为什么导入语句不起作用吗


谢谢

下划线与空格不同。如果
jni.h
确实位于“程序文件”目录中,则应使用以下命令:

gcc-Wl,--添加stdcall别名-I“C:\Program Files\Java\jdk1.7.0\u 45\include”-I“C:\Program Files\Java\jdk1.7.0\u 45\include\win32”-shared-o hello.dll HelloJNI.C

我得到了答案:

我只需要使用引号,用斜杠替换反斜杠,用空格替换下划线

该命令如下所示:

gcc-Wl,--add stdcall别名-I“C:/Program 文件/Java/jdk1.7.0_45/include“ -I“C:/Program Files/Java/jdk1.7.0_45/include/win32”-shared-o hello.dll HelloJNI.C


谢谢大家

您的语句可能重复的地方是
jni.h
位于
C:\Program Files\Java\jdk1.7.0\u 45\include
中,但是您的编译行指定了
-IC:\Program\u Files\Java\jdk1.7.0\u 45\include
。您的gcc是否为您将下划线转换为空格?x86_64-w64-mingw32-gcc-I“C:\Program Files\Java\jdk1.8.0_151\include”-I“C:\Program Files\Java\jdk1.8.0_151\include\win32”-shared-o hello.dll hellojlojni.C-为我工作过,这就是为什么我从来没有在“C:/Program Files”中安装过任何东西。我甚至没有“C:/Program Files”目录:我打赌你有。。。。仅仅因为浏览器将其显示为“C:\Program”或其他内容并不意味着它不在那里。Windows在那里有很多黑色的“魔法”。我希望他们要么解雇那些设计了“程序文件”、“自己的文档”等垃圾的白痴,要么在NTFS中设计出合理的符号链接,要么忘记所有的“魔法”路径名。更好的是,采用一个真正的文件系统,让NTFS的垃圾消失。(见鬼,它们仍然不区分大小写!)你似乎认为我一开始就使用Windows。在这种情况下,你当然是干净的。可以肯定的是,每一个从事更多相关开发的人,比如OP,都不应该在Windows上进行开发。linux环境下会是什么样子?在linux中,它与Windows不同。我从来没有这样做过,但也许可以试试这个教程。我希望这是有帮助的
C:\Program Files\Java\jdk1.7.0_45\include