尝试在 webdriver.io 项目中打开 allure-reports 时出现异常 java.lang.UnsatisfiedLinkError

Exception java.lang.UnsatisfiedLinkError when trying to open allure-reports in webdriver.io project

我有一个小的 webdriver.io 项目,只是为了第一次试验它。我现在想添加魅力报告,但是当我尝试 运行 allure open 时,出现以下异常,我不知道我必须在哪里解决这个问题:

Starting web server...
2021-05-04 22:06:43.669:INFO::main: Logging initialized @349ms to org.eclipse.jetty.util.log.StdErrLog
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
        at java.base/java.lang.Runtime.load0(Runtime.java:768)
        at java.base/java.lang.System.load(System.java:1837)
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
        at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
        at java.base/java.lang.System.loadLibrary(System.java:1873)
        at java.desktop/java.awt.Toolkit.run(Toolkit.java:1399)
        at java.desktop/java.awt.Toolkit.run(Toolkit.java:1397)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1396)
        at java.desktop/java.awt.Toolkit.<clinit>(Toolkit.java:1429)
        at java.desktop/java.awt.Desktop.isDesktopSupported(Desktop.java:328)
        at io.qameta.allure.Commands.openBrowser(Commands.java:220)
        at io.qameta.allure.Commands.open(Commands.java:152)
        at io.qameta.allure.CommandLine.run(CommandLine.java:165)
        at java.base/java.util.Optional.orElseGet(Optional.java:369)
        at io.qameta.allure.CommandLine.main(CommandLine.java:88)

报告生成得很好。只有当我尝试打开它们时才会出现此错误。

我通过 npm 安装了 allure-reporter 和 allure-commandline。我的项目在 Debian WSL 中,运行 chromedriver 与 VcXsrv X Server 以防这可能有帮助。

是否有人知道如何解决此错误或提示要查找的内容?我希望我给了你足够的信息。如果没有,就说你需要什么。预先感谢您的帮助!

编辑: 我再次安装了 openjdk-11-jdk 并解决了原来的错误。但现在我收到以下消息:

2021-05-04 23:33:34.871:INFO::main: Logging initialized @395ms to org.eclipse.jetty.util.log.StdErrLog
Browse operation is not supported on your platform.You can use the link below to open the report manually.
java.lang.UnsupportedOperationException: The BROWSE action is not supported on the current platform!
        at java.desktop/java.awt.Desktop.checkActionSupport(Desktop.java:380)
        at java.desktop/java.awt.Desktop.browse(Desktop.java:524)
        at io.qameta.allure.Commands.openBrowser(Commands.java:222)
        at io.qameta.allure.Commands.open(Commands.java:152)
        at io.qameta.allure.CommandLine.run(CommandLine.java:165)
        at java.base/java.util.Optional.orElseGet(Optional.java:369)
        at io.qameta.allure.CommandLine.main(CommandLine.java:88)
Server started at <http://127.0.1.1:46223/>. Press <Ctrl+C> to exit

当我按照那个 link 无法访问时。

您可能缺少一些下游库。

运行这个找出有哪些,然后安装它们。

$ ldd /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
java.lang.UnsupportedOperationException: The BROWSE action is not supported on the current platform!
       at java.desktop/java.awt.Desktop.checkActionSupport(Desktop.java:380)
       at java.desktop/java.awt.Desktop.browse(Desktop.java:524)
       at io.qameta.allure.Commands.openBrowser(Commands.java:222)

这意味着 WSL 不支持 java.awt.Desktop.browse()

这已经在 Whosebug 中提出过。

在 ubuntu 20.04:

sudo apt install openjdk-11-jdk

按照 Joakim 的建议 ,安装了无头版本。我在 ldd 上遇到了同样的错误,缺少库。

笼统地改变你的问题不是一个好主意,最好先搜索一下,如果需要再问一个新的问题,并说明所有细节。

这可能有助于您了解第二个问题的可能原因:

Desktop API is not supported on the current platform

如果你想使用 Linux,我强烈建议使用普通 Ubuntu Linux 安装,WSL 不一样,并且有你在 Linux。如果专用安装不是一个选项,请尝试查找一般问题。预计 shell、docker 和图形相关事物的行为会有所不同,因为这些事物是专门为 WSL 以某些方式实现的。