Ошибка JNI при сборке

#java #c #java-native-interface #native

#java #c #java-native-interface #родной

Вопрос:

Я следую «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, и я как бы застрял на этом этапе.
Пожалуйста, дайте мне знать, в чем ошибка?
Заранее спасибо.

Комментарии:

1. Похоже, вы указали путь ‘/cygdrive/C/ Program Files/Java/jdk1.7.0_79 /include’ к диску C, доступ к которому осуществляется из cygwin. Какая-либо конкретная причина для этого?

2. Cygdrive записывается в консоль, тогда как я сохранил все файлы на диске C, и нет ни одного имени папки cygdrive. Не понимаю, откуда берется этот cygdrive.

Ответ №1:

Вы JNIDemoCdl вызываете make внутри cygwin64. Это причина, по которой вы получаете /cygdrive перед каждым именем каталога, поскольку они выполняются внутри дисков, подключенных к cygwin.

Я думаю, что проблема связана с пространством в «Program Files«, которое вы в итоге получаете:

cc1: неустранимая ошибка: /cygdrive/C/Program Files/Java/jdk1.7.0_79/include: компиляция такого файла или каталога не завершена.

Попробуйте сохранить /Java/jdk1.7.0_79/ в каталоге без пробелов в имени и снова создайте проект.