选择

选择

我已经安装了 Android Studio 作为扁平包装我想设置OpenJDK 11运行单元测试(因为我正在使用需要 Java 9+ 的 robolectric)。

据我了解,该/usr目录已被列入黑名单,因此我启用了usr/lib/jvm使用该应用程序的权限扁平密封

当我尝试运行单元测试时出现此错误: ‘usr/lib/jvm/java11-openjdk-amd64’ 不是有效的 JRE 主目录

我很确定目录一个有效的 JRE 主页,因为使用 Android Studio snap,它被识别并且测试可以运行。

在此处输入图片描述

答案1

我知道这有点晚了,但我刚刚遇到了同样的问题,却找不到任何解决方案。我终于弄清楚了,在启用访问后,/usr/lib/jvm它可以从 flatpak 应用程序内部找到在 地点/var/run/host/usr/lib/jvm

也可以通过命令行启用对 /usr/lib/jvm 的访问

sudo flatpak override --filesystem=/usr/lib/jvm

为所有 flatpak 应用程序启用或

sudo flatpak override <package identifier> --filesystem=/usr/lib/jvm

为给定的包启用。

这仍然会不行如果主机 Java 版本是动态链接的(大多数情况下都是这样),并且主机的 libc 版本与 flatpak 应用程序中的版本不同。在这种情况下,您唯一的选择是使用静态链接的 Java 版本,或者找出一个巧妙的链接器技巧,当在 flatpak 应用程序中使用时,将主机 Java 可执行文件链接到主机 libc。

选择

您可以在 flatpak 中安装 OpenJDK,它可以/usr/lib/sdk/openjdk<version>/jvm/在 flatpak 应用程序内部使用。

要安装 OpenJDK 11,请使用

flatpak install org.freedesktop.Sdk.Extension.openjdk11

这不能以 root 用户身份完成,所以不要使用 sudo。根据需要调整版本号。您需要重新启动 Android Studio/IntelliJ/...以便能够访问新的 OpenJDK 安装。

但是这会占用您额外的磁盘空间。对我来说,它占用了超过半 GB。此外,现在您有两个 Java 版本,您需要分别更新它们。此外,只有 OpenJDK 版本的 jdk 可用于 flatpak。

相关内容