如何授予 VSCode Flatpak 包访问 Java 系统 SDK 的权限?

如何授予 VSCode Flatpak 包访问 Java 系统 SDK 的权限?

我已经安装了 VSCode flatpak 包。

flatpak install flathub com.visualstudio.code

现在有一个文件flatpak-warning.txt

内容如下


https://www.flathub.org

------------------------------------------------------------------------------------
| Warning: You are running an unofficial Flatpak version of Visual Studio Code !!! |
------------------------------------------------------------------------------------

Please open issues under: https://github.com/flathub/com.visualstudio.code/issues


This version is running inside a container and is therefore not able
to access SDKs on your host system!

To execute commands on the host system, run inside the sandbox:

  $ flatpak-spawn --host <COMMAND>
  
To make the Integrated Terminal automatically use the host system's shell,
you can add this to the settings:

  {
    "terminal.integrated.defaultProfile.linux": "bash",
    "terminal.integrated.profiles.linux": {
        "bash": {
          "path": "/usr/bin/flatpak-spawn",
          "args": ["--host", "--env=TERM=xterm-256color", "bash"]
        }
    }
  }

This flatpak provides a standard development environment (gcc, python, etc).
To see what's available:

  $ flatpak run --command=sh com.visualstudio.code
  $ ls /usr/bin (shared runtime)
  $ ls /app/bin (bundled with this flatpak)

To get support for additional languages, you have to install SDK extensions, e.g.

  $ flatpak install flathub org.freedesktop.Sdk.Extension.dotnet
  $ flatpak install flathub org.freedesktop.Sdk.Extension.golang
  $ FLATPAK_ENABLE_SDK_EXT=dotnet,golang flatpak run com.visualstudio.code

You can use

  $ flatpak search <TEXT>

to find others.

现在我已经在系统上安装了 OpenJDK。

java --version
openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.21.10)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.21.10, mixed mode, sharing)

但是当我尝试创建 Java 项目时,它没有显示构建工具。

现在我的问题是我不知道在哪里添加这些行 -

{
    "terminal.integrated.defaultProfile.linux": "bash",
    "terminal.integrated.profiles.linux": {
        "bash": {
          "path": "/usr/bin/flatpak-spawn",
          "args": ["--host", "--env=TERM=xterm-256color", "bash"]
        }
    }
  }

我也无法理解——

$ flatpak-spawn --host <COMMAND>

答案1

我不确定您是否仍在寻找答案,但这对我有用(不是使用系统 SDK,而是使用 Flatpak 扩展制作的 SDK):

  1. 检查 Flatpak 可用的 Java SDK 扩展(可以通过 VSCode 访问)flatpak search Sdk | grep -i jdkjdk 搜索输出
  2. 安装您想要的,例如flatpak install org.freedesktop.Sdk.Extension.openjdk17
  3. 按照 flatpak-warning.txt 文件中的说明,您可以通过使用 VSCode 命令运行 flatpak shell 来查看 flatpak 可用的内容(二进制文件、SDK 等)flatpak run --command=sh com.visualstudio.code。第 2 步中安装的 JDK 扩展保存在 flatpak 层次结构中的 /usr/lib/sdk 中(至少在我的 Fedora 安装中如此,但我认为在 Ubuntu 上应该相同)。通过运行确认ls /usr/lib/sdk 在 flatpak shell 中你应该在那里看到你的 SDK(可能还有其他东西): 列在 /usr/lib/sdk 中
  4. 您需要将其添加到 VSCode 配置中,对我来说它位于 settings.json 中:
    "java.jdt.ls.java.home": "/usr/lib/sdk/openjdk17/jvm/openjdk-17.0.1/"`,
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-17",
            "path": "/usr/lib/sdk/openjdk17/jvm/openjdk-17.0.1/",
            "default": true
        }
    ],

此后,我重新启动了 VSCode,一切正常。顺便说一句,您在 flatpak shell 中执行的任何操作都应该在 VSCode 本身的终端窗口中同样有效。

答案2

您可以在 settings.json 文件中添加这些行。

正如 flatpak-warning.txt 中提到的,在沙箱内运行主机命令,例如:

flatpak-spawn--host java--版本

答案3

我正在使用 Linux Mint 21.2。我从内置 flatpak 软件管理器安装了 VSCode,但遇到了同样的问题。

首先,我认为明确编辑 VSCode 配置来访问系统 SDK 相当麻烦。

其次,当我打开同步时,我认为本地 flatpak VSCode 配置会弄乱在线同步的版本,因为 VSCode 要求我合并冲突。

因此,我宁愿从https://code.visualstudio.com/download并手动安装。

sudo apt install ./code_(whatever_version).deb

这样安装的VSCode就可以正常工作了。

相关内容