构建时JNI错误

JNI error while building

本文关键字:错误 JNI 构建      更新时间:2023-10-16

我遵循"https://netbeans.org/kb/docs/cnd/beginning-jni-linux.html" Netbeans教程的JNI,但当我构建项目时,我在Netbeans输出中得到这个错误:

cd 'E:JanhaviProjectsJNIDemoCdl'
C:cygwin64binmake.exe -f Makefile CONF=Debug clean
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .clean-conf
make[1]: Entering directory '/cygdrive/e/Janhavi/Projects/JNIDemoCdl'
rm -f -r build/Debug
rm -f dist/libJNIDemoCdl.so
make[1]: Leaving directory '/cygdrive/e/Janhavi/Projects/JNIDemoCdl'
CLEAN SUCCESSFUL (total time: 356ms)
cd 'E:JanhaviProjectsJNIDemoCdl'
C:cygwin64binmake.exe -f Makefile CONF=Debug
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/cygdrive/e/Janhavi/Projects/JNIDemoCdl'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/libJNIDemoCdl.so
make[2]: Entering directory '/cygdrive/e/Janhavi/Projects/JNIDemoCdl'
mkdir -p build/Debug/Cygwin-Windows/_ext/4d151f2
rm -f "build/Debug/Cygwin-Windows/_ext/4d151f2/JNIDemo.o.d"
gcc -shared -m64   -c -g -I/cygdrive/C/Program Files/Java/jdk1.7.0_79/include -I/cygdrive/C/Program Files/Java/jdk1.7.0_79/include/win32 -include /cygdrive/C/Program Files/Java/jdk1.7.0_79/include -include /cygdrive/C/Program Files/Java/jdk1.7.0_79/include/win32  -MMD -MP -MF "build/Debug/Cygwin-Windows/_ext/4d151f2/JNIDemo.o.d" -o build/Debug/Cygwin-Windows/_ext/4d151f2/JNIDemo.o /cygdrive/E/Janhavi/Projects/JNIDemoCdl/JNIDemo.c
cc1: fatal error: /cygdrive/C/Program Files/Java/jdk1.7.0_79/include: No such file or directory
compilation terminated.
make[2]: *** [nbproject/Makefile-Debug.mk:68: build/Debug/Cygwin-Windows/_ext/4d151f2/JNIDemo.o] Error 1
make[2]: Leaving directory '/cygdrive/e/Janhavi/Projects/JNIDemoCdl'
make[1]: *** [nbproject/Makefile-Debug.mk:59: .build-conf] Error 2
make[1]: Leaving directory '/cygdrive/e/Janhavi/Projects/JNIDemoCdl'
make: *** [nbproject/Makefile-impl.mk:40: .build-impl] Error 2
BUILD FAILED (exit value 2, total time: 557ms)

这是我第一次尝试使用JNI,我有点卡在这一点上。请告诉我哪里出错了?

您的JNIDemoCdl正在cygwin64内部调用make。这就是为什么在cygwin挂载的驱动器中执行每个目录名称时,会在它们前面显示/cygdrive的原因。

我认为问题在于'程序文件'中的空间,您最终得到:

cc1: fatal error:/cygdrive/C/Program Files/Java/jdk1.7.0_79/include:没有这样的文件或目录编译终止。

尝试将/Java/jdk1.7.0_79/存储在名称中没有空间的目录下并重新构建项目