You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2中Ubuntu22.x无法运行VisualVM的问题求助

WSL2 Ubuntu 22.04中运行VisualVM报错缺失libXtst.so.6的解决方法

问题背景

使用Windows 11系统,Windows版本VisualVM可正常运行。在WSL2的Ubuntu 22.04.3 LTS环境中通过sdkman配置好Java(8/17/21多个版本)、Maven后,运行Linux版VisualVM 2.1.7失败,报错提示缺失libXtst.so.6库,手动指定jdkhome参数仍无法解决。

相关版本信息

ahroo@AhrooranR:/mnt/c/Users/AhrooranRavindran$ sdk default java
17.0.9-amzn   21.0.1-amzn   8.0.392-amzn
ahroo@AhrooranR:/mnt/c/Users/AhrooranRavindran$ java -version
openjdk version "21.0.1" 2023-10-17 LTS
OpenJDK Runtime Environment Corretto-21.0.1.12.1 (build 21.0.1+12-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.1.12.1 (build 21.0.1+12-LTS, mixed mode, sharing)
ahroo@AhrooranR:/mnt/c/Users/AhrooranRavindran$ mvn -v
Apache Maven 3.9.4 (dfbb324ad4a7c8fb0bf182e6d91b0ae20e3d2dd9)
Maven home: /mnt/c/AHROO/programs/apache-maven-3.9.2
Java version: 21.0.1, vendor: Amazon.com Inc., runtime: /home/ahroo/.sdkman/candidates/java/21.0.1-amzn
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.15.133.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"
ahroo@AhrooranR:/mnt/c/Users/AhrooranRavindran$ sdk default visualvm 2.1.7
setting visualvm 2.1.7 as the default version for all shells.
ahroo@AhrooranR:/mnt/c/Users/AhrooranRavindran$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy

报错日志

运行visualvm时的错误:

ahroo@AhrooranR:/mnt/c/Users/AhrooranRavindran$ visualvm
java.lang.UnsatisfiedLinkError: /home/ahroo/.sdkman/candidates/java/21.0.1-amzn/lib/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2418)
        at java.base/java.lang.Runtime.load0(Runtime.java:852)
        at java.base/java.lang.System.load(System.java:2021)
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
        at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:259)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:249)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2427)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916)
        at java.base/java.lang.System.loadLibrary(System.java:2059)
        at java.desktop/sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:67)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
        at java.desktop/sun.awt.X11GraphicsEnvironment.initStatic(X11GraphicsEnvironment.java:64)
        at java.desktop/sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:59)
        at java.desktop/sun.awt.PlatformGraphicsInfo.createGE(PlatformGraphicsInfo.java:37)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:93)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<clinit>(GraphicsEnvironment.java:84)
        at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:106)
        at org.netbeans.core.startup.Main.start(Main.java:245)
        at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
        at java.base/java.lang.Thread.run(Thread.java:1583)

开启控制台日志后的输出:

ahroo@AhrooranR:/mnt/c/Users/AhrooranRavindran$ visualvm -J-Dnetbeans.logger.console=true
java.lang.UnsatisfiedLinkError: /home/ahroo/.sdkman/candidates/java/21.0.1-amzn/lib/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2418)
        at java.base/java.lang.Runtime.load0(Runtime.java:852)
        at java.base/java.lang.System.load(System.java:2021)
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
        at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:259)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:249)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2427)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916)
        at java.base/java.lang.System.loadLibrary(System.java:2059)
        at java.desktop/sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:67)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
        at java.desktop/sun.awt.X11GraphicsEnvironment.initStatic(X11GraphicsEnvironment.java:64)
        at java.desktop/sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:59)
        at java.desktop/sun.awt.PlatformGraphicsInfo.createGE(PlatformGraphicsInfo.java:37)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:93)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<clinit>(GraphicsEnvironment.java:84)
        at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:106)
        at org.netbeans.core.startup.Main.start(Main.java:245)
        at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:98)
        at java.base/java.lang.Thread.run(Thread.java:1583)
-------------------------------------------------------------------------------
>Log Session: Sunday, January 7, 2024, 6:02:00 PM India Standard Time
>System Info:
  Product Version         = VisualVM 2.1.7
  Operating System        = Linux version 5.15.133.1-microsoft-standard-WSL2 running on amd64
  Java; VM; Vendor        = 21.0.1; OpenJDK 64-Bit Server VM 21.0.1+12-LTS; Amazon.com Inc.
  Runtime                 = OpenJDK Runtime Environment 21.0.1+12-LTS
  Java Home               = /home/ahroo/.sdkman/candidates/java/21.0.1-amzn
  System Locale; Encoding = en (visualvm); UTF-8
  Home Directory          = /home/ahroo
  Current Directory       = /mnt/c/Users/AhrooranRavindran
  User Directory          = /home/ahroo/.visualvm/2.1.7
  Cache Directory         = /home/ahroo/.cache/visualvm/2.1.7
  Installation            = /home/ahroo/.sdkman/candidates/visualvm/current/visualvm
                            /home/ahroo/.sdkman/candidates/visualvm/current/platform
  Boot & Ext. Classpath   =
  Application Classpath   = /home/ahroo/.sdkman/candidates/visualvm/current/platform/lib/boot.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/lib/org-openide-modules.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/lib/org-openide-util-lookup.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/lib/org-openide-util-ui.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/lib/org-openide-util.jar
  Startup Classpath       = /home/ahroo/.sdkman/candidates/visualvm/current/platform/core/org-openide-filesystems.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/core/core-base.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/core/org-netbeans-libs-asm.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/core/core.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/core/asm-commons-9.2.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/core/asm-tree-9.2.jar:/home/ahroo/.sdkman/candidates/visualvm/current/platform/core/asm-9.2.jar:/home/ahroo/.sdkman/candidates/visualvm/current/visualvm/core/org-graalvm-visualvm-modules-startup.jar:/home/ahroo/.sdkman/candidates/visualvm/current/visualvm/core/locale/core_visualvm.jar
-------------------------------------------------------------------------------

解决步骤

  1. 安装缺失的X11依赖库
    在WSL2的Ubuntu终端执行以下命令,安装libXtst.so.6及其关联的X11库:

    sudo apt update
    sudo apt install libxtst6 libxrender1 libxi6 libxrandr2 libxcursor1 libxinerama1
    

    这些库是Java AWT/Swing GUI程序在Linux环境运行必需的依赖。

  2. 确保WSL2的X11转发配置正确

    • Windows端需安装X服务器(如VcXsrv、X410),启动时勾选"Disable access control"选项。
    • 在WSL2的~/.bashrc或~/.zshrc中添加以下环境变量配置:
      export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
      export LIBGL_ALWAYS_INDIRECT=1
      
    • 执行source ~/.bashrc(或对应的shell配置文件)使配置生效。
  3. 重新运行VisualVM
    配置完成后,直接在终端执行visualvm即可启动程序。如果之前指定过jdkhome,也可以继续使用该参数:

    visualvm --jdkhome=/home/ahroo/.sdkman/candidates/java/17.0.9-amzn
    

内容的提问来源于stack exchange,提问作者ahrooran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:54:51