JNI: «получение рецепта для цели« HelloJNI.h »не удалось при использовании файла makefile» - PullRequest
0 голосов
/ 13 марта 2019

Я экспериментирую с использованием JNI с Eclipse, используя этого учебника , и мне не удается использовать make-файл, как описано в части "2.6 JNI в Eclipse - шаг 3".

Когда я щелкаю правой кнопкой мыши на папке jni, выбирая «Построить цели» => «Построить» => и выбирая цель HelloJNI.h => Построить, я получаю следующее сообщение об ошибке:

10: 19: 12 **** Сборка конфигурации По умолчанию для проекта HelloJNI **** сделать HelloJNI.h javac -h -classpath ../bin HelloJNI makefile: 10: рецепт для цели 'HelloJNI.h' не удался process_begin: Ошибка CreateProcess (NULL, javac -h -classpath ../bin HelloJNI, ...). make (e = 2): больше всего интересного.

make: *** [HelloJNI.h] Ошибка 2

10: 19: 13 Сборка завершена (заняло 801 мс)

и последняя строка файла make-файла, показанная ниже, указывает на ошибку (но какую?)

# Define a variable for classpath
CLASS_PATH = ../bin

# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)

HelloJNI.h : HelloJNI.class
    javac -h -classpath $(CLASS_PATH) $*

Я проверил, что у меня есть файл "make" в "C: \ MinGW \ bin". Я так не сделал, сделал копию «mingw32-make.exe» и переименовал ее в «make.exe».
Я также пытался изменить последнее вторжение javac -h (...) на javah (...), но я получаю ту же ошибку.

Полагаю, строка ошибки

Ошибка CreateProcess (NULL, javac -h -classpath ../bin HelloJNI, ...). make (e = 2): более привлекательный. [Указанный файл не найден.]

должно помочь мне понять, что не так, но мне это не удалось.

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 13 марта 2019

Ошибка не приходит от javac ´- она ​​вызвана тем, что javac не находится в PATH , а системный вызов CreateProcess не может найти ее, и поэтому команда не выполнено Ничто из того, что вы измените после javac, не поможет там. Возможные исправления, например:

  • добавление пути javac к PATH ...
  • вызов javac с полным путем к нему:

    c:/Foo/Bar/JavaSDK/bin/whatever/javac -h -classpath $(CLASS_PATH) $*
    
...