jni.h не найден (сборка VBox 20.04) - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь собрать VirtualBox-6.1.6 из исходников. на Ubuntu 20.04 (пожалуйста, не говорите о предварительно скомпилированном, я ищу решение ЭТОЙ проблемы). Я получаю ошибку компиляции от kmk.

nsAppFileLocProviderProxy.h:42:10: fatal error: jni.h: No such file or directory
42 | #include "jni.h"

, однако у меня больше одной копии ..

locate jni.h
/usr/include/x86_64-linux-gnu/libavcodec/jni.h
/usr/lib/jvm/java-11-openjdk-amd64/include/jni.h
/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h

это проблема с использованием openjdk vs the sun / one? какую строку мне нужно изменить в AutoConfig.kmk?

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

Виртуальный ящик сценарий сборки ищет Java на Linux вот так :

     ifeq ($(KBUILD_TARGET),linux)
      ifeq ($(origin VBOX_JAVA_HOME),undefined)
       # Add correct detection for you distro after the /usr/../java-6-sun line.
       VBOX_JAVA_HOME := $(firstword $(wildcard \
            $(KBUILD_DEVTOOLS)/linux.x86/jdk1.6.0_27 \
            /usr/lib/jvm/java-6-sun  \
            /usr/lib/jvm/java-6-openjdk \
            /usr/lib/jvm/java-6-openjdk-i386 \
            /usr/lib/jvm/java-6-openjdk-amd64 \
            /usr/lib/jvm/java-7-openjdk-i386 \
            /usr/lib/jvm/java-7-openjdk-amd64 \
            /usr/lib/jvm/default-java \
            /usr/lib/jvm/java \
            \
            /usr/lib/jvm/sun-jdk-1.6 \
            ) /usr/lib/jvm/java-6-sun)
      endif
     endif

Ваши пути (/usr/lib/jvm/java-11-openjdk-amd64/ и /usr/lib/jvm/java-8-openjdk-amd64/) не отображаются в этом списке. Поэтому он не ищет там jni.h.

Моя немедленная мысль - добавить туда ваш путь OpenJDK 8:

            /usr/lib/jvm/java-7-openjdk-i386 \
            /usr/lib/jvm/java-7-openjdk-amd64 \
            /usr/lib/jvm/java-8-openjdk-amd64 \     <<<< ADD This
            /usr/lib/jvm/default-java \

Затем попробуйте перекомпилировать. Если это сработает, может быть, даже отправить исправление специалистам по обслуживанию виртуальных ящиков?

0 голосов
/ 07 мая 2020

ах .. Мне удалось это решить, я нашел старый список других зависимостей и добавил кучу java -common было одним, по какой-то причине моя cmdline не сохранила этот cmd, поэтому я не могу его воспроизвести. однако у меня все еще есть только jni.h в упомянутых мной местах ... тем не менее, мне пришлось повторно запустить ./configure, а затем env.sh script, и, похоже, он решил эту проблему. и он выполнил ..

...