修复VisualVM中的“不支持的OpenJDK”错误 | AI生成和翻译

Home 2025.06

在运行 VisualVM 时出现错误“Version of OpenJDK is not supported. Please use the default-jdk”,表明当前使用的 Java 开发工具包(JDK)版本与 VisualVM 不兼容。当 VisualVM 无法找到受支持的 JDK 或安装的 JDK 未正确配置时,通常会出现此问题。以下是根据您的设置(YourKit Java Profiler 2025.3 和 VisualVM,似乎是在 Linux 系统上)解决此问题的步骤。

解决步骤

  1. 检查当前 Java 版本 运行以下命令以验证已安装的 Java 版本:
    java -version
    

    这将显示 OpenJDK 版本,例如:

    openjdk version "17.0.9" 2023-10-17
    OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-122.04)
    OpenJDK 64-Bit Server VM (build 17.0.9+9-Ubuntu-122.04, mixed mode, sharing)
    

    VisualVM 通常需要 JDK(不仅仅是 JRE),并支持 Oracle JDK 8+ 或兼容的 OpenJDK 版本。请确保您安装了受支持的 JDK。

  2. 安装默认 JDK 错误提示建议使用 default-jdk。在 Ubuntu/Debian 上,您可以使用以下命令安装:
    sudo apt update
    sudo apt install default-jdk
    

    这通常会安装一个稳定、受支持的 OpenJDK 版本(例如 OpenJDK 11 或 17)。安装后,再次使用 java -version 验证版本。

  3. 设置 JAVA_HOME 环境变量 VisualVM 依赖 JAVA_HOME 环境变量来定位 JDK。检查是否已设置:
    echo $JAVA_HOME
    

    如果未设置或指向不受支持的 JDK,请将其设置为正确的 JDK 路径。例如,如果 default-jdk 安装了 OpenJDK 17,路径可能为 /usr/lib/jvm/java-17-openjdk-amd64。使用以下命令设置:

    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
    

    要使其永久生效,请将该行添加到您的 ~/.bashrc~/.zshrc

    echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
    source ~/.bashrc
    

    将路径替换为您系统上的实际 JDK 路径(使用 update-alternatives --list java 查找)。

  4. 为 VisualVM 指定 JDK 路径 如果设置 JAVA_HOME 无法解决问题,您可以在启动 VisualVM 时显式指定 JDK 路径:
    ~/bin/YourKit-JavaProfiler-2025.3/bin/visualvm --jdkhome /usr/lib/jvm/java-17-openjdk-amd64
    

    /usr/lib/jvm/java-17-openjdk-amd64 替换为您的 JDK 路径。这确保 VisualVM 使用指定的 JDK。

  5. 安装兼容的 JDK 如果 default-jdk 仍然不兼容,请考虑安装已知与 VisualVM 兼容的特定 JDK 版本,例如 OpenJDK 11 或 Oracle JDK 8+:
    sudo apt install openjdk-11-jdk
    

    然后,按照上述方法更新 JAVA_HOME 或使用 --jdkhome 选项。

  6. 检查 VisualVM 安装 确保 VisualVM 已正确安装。错误提示您正在从 YourKit Java Profiler 目录(~/bin/YourKit-JavaProfiler-2025.3/bin)运行 VisualVM。这并不常见,因为 VisualVM 通常是独立工具或与 JDK 捆绑提供。验证 VisualVM 是否未损坏:
    • visualvm.github.io/download.html 下载最新的 VisualVM 版本(例如,VisualVM 2.2,发布于 2025 年 4 月 22 日,支持 JDK 24)。
    • 将其解压到新目录并运行:
      unzip visualvm_22.zip
      cd visualvm_22/bin
      ./visualvm --jdkhome /usr/lib/jvm/java-17-openjdk-amd64
      

      避免在现有的 VisualVM 安装上解压覆盖,因为这可能导致问题。

  7. 检查多个 Java 安装 多个 Java 版本可能导致冲突。列出所有已安装的 Java 版本:
    update-alternatives --list java
    

    如果列出了多个版本,请将所需的版本设置为默认:

    sudo update-alternatives --config java
    

    选择与兼容 JDK(例如 OpenJDK 11 或 17)对应的编号。

  8. 验证 VisualVM 依赖项 VisualVM 需要 libnb-platform18-javalibvisualvm-jni。确保这些已安装:
    sudo apt install libnb-platform18-java libvisualvm-jni
    

    如果您通过 apt 安装 VisualVM,这一点尤其相关。

  9. 绕过 OpenJDK 限制(可选) 如果您使用的是不受支持的 OpenJDK 构建(例如 IcedTea 或 AdoptOpenJDK),分析功能可能受限。您可以通过添加命令行参数来绕过某些限制:
    ./visualvm --jdkhome /usr/lib/jvm/java-17-openjdk-amd64 -J-Dorg.graalvm.visualvm.profiler.SupportAllVMs=true
    

    这将为不受支持的 JVM 启用分析功能,但不能保证完美运行。

  10. 检查 YourKit 和 VisualVM 兼容性 由于您从 YourKit Java Profiler 目录运行 VisualVM,请确保 YourKit 的环境没有干扰。YourKit Java Profiler 2025.3 可能捆绑了特定的 VisualVM 版本或配置。请查阅 YourKit 的文档或联系 support@yourkit.com 以确认与您的 JDK 的兼容性。或者,尝试独立运行 VisualVM(单独下载)以隔离问题。

附加说明

如果问题仍然存在

如果以上方法均无法解决问题,请提供:

这将有助于进一步定位问题。您也可以将问题报告给 VisualVM GitHub 页面(https://github.com/oracle/visualvm)或 YourKit 支持以获取具体指导。


Back Donate