【问题标题】:Facing issues while opening a URL in the default browser using Java on Eclipse在 Eclipse 上使用 Java 在默认浏览器中打开 URL 时遇到问题
【发布时间】:2022-11-28 22:59:02
【问题描述】:

我有一个简单的Java程序我想做的是打开一个网址为了例如“https://github.com”在我的操作系统的默认浏览器中,我使用视窗 10.

这是我运行程序时得到的蚀:

Image

我认为有问题我的代码:

package com.main;

import java.awt.Desktop;
import java.net.URI;

public class Browser {
    public void displayURL() throws Exception {

        String url = "https://github.com";
        String myOS = System.getProperty("os.name").toLowerCase();
        System.out.println("(Your operating system is: " + myOS + ")\n");

        try {
            if (Desktop.isDesktopSupported()) {
                System.out.println(" -- Going with Desktop.browse ...");
                Desktop desktop = Desktop.getDesktop();
                desktop.browse(new URI(url));
            } else {
                ProcessBuilder pb = new ProcessBuilder();
                if (myOS.contains("windows 10")) {
                    System.out.println("Hello Windows 10");
                    pb.command("start " + url);
                    pb.start();
                } else if (myOS.contains("mac")) {
                    pb.command("open " + url);
                    pb.start();
                } else if (myOS.contains("nix") || myOS.contains("nux")) {
                    pb.command("xdg-open " + url);
                    pb.start();
                } else {
                    System.out.println("Sorry!! I could not launch the browser on your operating system.");
                }
            }
        } catch (Exception e) {
            System.out.println("Oops!! Something is wrong. " + e.getMessage());
        }
    }
}

我希望找到解决办法

【问题讨论】:

  • Desktop.isDesktopSupported() 返回 false。后面的条件不包括myOS是"windows 10"的情况,你需要为此添加代码。
  • 你能给我举个例子吗
  • 我是 Java 新手

标签: java eclipse command-line-interface java-11


【解决方案1】:

java.lang.ProcessBuilder 类用于启动可执行文件。

我既不能访问 MacOS 也不能访问 linux,所以我不能对它们发表评论。

对于 Windows,start 不是可执行文件,它是 cmd.exe 的内部命令(就像 dir)。因此,您收到错误消息。 Java 正在寻找名为start 的可执行文件,但找不到。

在 Windows 上,为了启动默认的 Internet 浏览器,您可以使用 rundll32.exe。

import java.io.IOException;

public class Browser {

    public static void main(String[] args) {
        ProcessBuilder pb = new ProcessBuilder("rundll32.exe",
                                               "url.dll,OpenURL",
                                               "https://github.com");
        try {
            pb.start();
        }
        catch (IOException x) {
            x.printStackTrace();
        }
    }
}

当我运行上面的代码时,它会在 GitHub 主页上启动 Microsoft Edge。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2020-11-27
    • 2017-10-03
    • 2018-08-21
    • 2014-12-29
    • 2020-05-06
    • 2011-05-30
    相关资源
    最近更新 更多