如何在 Raspberry-Pi 上解决 "java.lang.Exception: No web browser found"

How to solve "java.lang.Exception: No web browser found" on Raspberry-Pi

在 Raspberry Pi OS 上,我尝试使用 JavaFX 安装 Java 的多个版本,以便 运行 [rbox.jar| https://www.radiosparx.com/sslbypass/str/app/rbox.jar]。我找到的最好的 Java 版本是来自 https://bell-sw.com/ 的那个,但即使有了它我也无法让它工作。

在大多数情况下,我收到以下错误:

pi@raspberrypi:~/rbox $ java -jar rbox.jar
java.lang.Exception: No web browser found
        at javafx.graphics/com.sun.javafx.application.HostServicesDelegate$StandaloneHostService.showDocument(HostServicesDelegate.java:146)
        at javafx.graphics/javafx.application.HostServices.showDocument(HostServices.java:115)
        at anywheresoftware.b4j.objects.JFX.ShowExternalDocument(JFX.java:138)
        at com.radiosparx.rbox.main$ResumableSub_AppStart.resume(main.java:150)
        at com.radiosparx.rbox.main._appstart(main.java:83)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at anywheresoftware.b4a.BA.raiseEvent2(BA.java:91)
        at anywheresoftware.b4a.BA.raiseEvent(BA.java:78)
        at com.radiosparx.rbox.main.start(main.java:37)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1(LauncherImpl.java:846)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait(PlatformImpl.java:455)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(PlatformImpl.java:428)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(PlatformImpl.java:427)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
        at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop(GtkApplication.java:277)
        at java.base/java.lang.Thread.run(Thread.java:834

我有 Chromium 和 Dillo

pi@raspberrypi:~ $ sudo update-alternatives --config x-www-browser
There are 2 choices for the alternative x-www-browser (providing /usr/bin/x-www-browser).

  Selection    Path                       Priority   Status
------------------------------------------------------------
* 0            /usr/bin/chromium-browser   90        auto mode
  1            /usr/bin/chromium-browser   90        manual mode
  2            /usr/bin/dillo              50        manual mode

如有任何帮助,我们将不胜感激。

错误信息很清楚,不是吗?该软件试图通过 HostServices.showDocument 方法显示文档(可能是一些 HTML 帮助文本或类似内容),但无法在 Raspi 上找到浏览器。那么问题来了,您的 Raspis 上是否安装了浏览器?如果没有,那就去做吧。不然看HostServicesDelegate$StandaloneHostService.showDocument里面的代码,看能不能通过它的lookup方法定位到

相关代码可以在这里找到:https://github.com/openjdk/jfx/blob/master/modules/javafx.graphics/src/main/java/com/sun/javafx/application/HostServicesDelegate.java