找不到jni.h(在20.04上构建VBox)

问题描述 投票:1回答:2

我正在尝试从源代码构建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与sun /一个有问题吗?我需要在AutoConfig.kmk中更改某些行吗?

java virtualbox
2个回答
2
投票

虚拟框build script searches for Java on Linux like this

     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
投票

ah ..我设法解决它,我发现了其他依赖项的旧清单,并添加了一堆java-common,因为某种原因我的cmdline没有保存该cmd,所以我无法重现它。但是我仍然只有jni.h在我提到的位置...但是,我随后不得不重新运行./configureenv.sh脚本似乎可以解决。并符合。。

© www.soinside.com 2019 - 2024. All rights reserved.