由于IntelliJ看不到而无法为JDK选择主目录?

时间:2019-02-03 01:26:54

标签: java linux ubuntu intellij-idea linuxmint

我的系统是Linux Mint 18.3 Cinnamon 64位。

我已经使用软件管理器安装了IntelliJ-IDEA和Default-jdk(openjdk-8-jdk)。

当使用Nemo或终端浏览时,我可以看到在/usr/lib/jvm/java-1.8.0-openjdk-amd64或/ etc / java-8-openjdk下的JDK文件夹。但这并不重要,因为IntelliJ无论如何都看不到任何一个文件夹。实际上,当试图“选择JDK的主目录”时,IntelliJ似乎只对/ usr / lib下的14个子文件夹(数百个文件夹)具有可见性。

甚至不知道如何使用sudo从命令行启动IDEA,例如测试该问题是否与许可相关,因为它显然是通过flatpak替代地发起的。

看起来像这样简单。我不确定自己在做什么错。

5 个答案:

答案 0 :(得分:2)

正如其他人所说-沙箱功能不是错误。

我认为@Kevin Dubois的答案在适当的情况下可能应该是首选(您可以通过flatpak安装要共享的东西),但是如果您想继续使用flatpak,则还有另一种解决方案 strong>

如何在Flatpak中找到/etc/usr路径:

如本文档的this部分的结尾所述,这两个目录均安装在Flatpakked软件的以下新路径下:

  • /etc/var/run/host/etc
  • /var/var/run/host/var

如何在Flatpak中找到其他路径:

注意:通常,最好给软件尽可能少的额外访问权限。这就是为什么在授予对路径的访问权限以使其在只读中可访问时,最好使用 optional :ro后缀的原因。如果某些软件滥用了对设备的访问权限,也将承担部分责任。

使用路径/var/lib/gems和flatpak com.jetbrains.IntelliJ-IDEA-Community的示例:

授予访问权限:

sudo flatpak override --filesystem="/var/lib/gems":ro com.jetbrains.IntelliJ-IDEA-Community

要检查当前权限,请执行以下操作:

flatpak info --show-permissions com.jetbrains.IntelliJ-IDEA-Community

禁止访问:

sudo flatpak override --nofilesystem="/var/lib/gems" com.jetbrains.IntelliJ-IDEA-Community

要重置权限:

sudo flatpak override --reset com.jetbrains.IntelliJ-IDEA-Community

filesystem permissions reference中有一些有用的路径变量,还有关于文件系统权限here的许多其他信息。

答案 1 :(得分:1)

您可以尝试安装IntelliJ IDEA from here,看看它是否更好。可以使用.tar.gz启动./idea.sh分发。请注意,您还可以使用Tools |创建启动器脚本。 Create Command-line Launcher。这适用于任何版本。

答案 2 :(得分:1)

我在Fedora 29上与Flatpak一起安装的IntelliJ遇到相同的问题。我相信(如果我错了,请纠正我)Linux Mint的软件管理器也使用flatpaks。

由于Flatpak沙箱应用程序的使用方式,事实证明这是“这是功能而不是错误”的情况之一。根据{{​​3}}上的文档:

  

沙盒权限   Flatpak的主要目标之一是通过将应用程序彼此隔离来提高桌面系统的安全性。这是使用沙箱实现的,这意味着默认情况下,使用Flatpak运行的应用程序对主机环境的访问极为有限。这包括:

     

除运行时,应用程序和   〜/ .var / app / $ APPID。其中只有最后一个是可写的。无法访问   网络。无权访问任何设备节点(除了/ dev / null,   等等)。无法访问沙箱外部的进程。有限的系统调用。   例如,应用程序不能使用非标准的网络套接字类型或   ptrace其他进程。对会话D-Bus实例的访问受限-   一个应用只能在总线上拥有自己的名称。无法访问主机   X11,系统D-Bus或PulseAudio等服务。大多数应用将   需要访问其中一些资源才能有用。这是   主要在完成构建阶段完成,可以   通过清单文件的finish-args部分配置(请参见   清单)。

解决此问题的一种方法是也使用flatpak安装JDK版本,例如。

flatpak install flathub org.freedesktop.Sdk.Extension.openjdk9 org.freedesktop.Sdk.Extension.openjdk10 org.freedesktop.Sdk.Extension.openjdk11

解决此问题的另一种方法是CrazyCoder提供的解决方案,该解决方案是使用tar.gz安装IntelliJ。这样就完全消除了整个沙箱约束。

答案 3 :(得分:0)

@Carolus对挂载目录的提示对我来说非常合适: 在我的Linx Mint上,jdk已安装在/ usr / lib / jvm / java-11-openjdk中。

(通过使用“哪个java”并将结果与​​“ readlink -e”一起使用来找到)

选择的/ var / run / host / usr / lib / jvm / java-11-openjdk 在Idea addJdk对话框中,它可以正常工作!无需更改flatpak权限。

答案 4 :(得分:0)

要防止Flatpak覆盖权限

将jvm文件夹移动到主目录中的新文件夹

Flatpak具有特定的列入黑名单的目录,而home被列入白名单。

fun TextInputLayout.setHintStyle(id: Int) {
    doOnLayout {
        setHintTextAppearance(id)
    }
}

在/ usr / lib / jvm中创建符号链接

如果任何文件仍指向该目录,则可以使用可以访问该文件夹的程序指向/ usr / lib / jvm。

yourInputLayout.setHintStyle(R.style.YourHintStyle)

在Intellij中选择sdk时,选择/ ForceHome / jvm / jdk_version

将jdk_version替换为您下载的openjdk版本