gpt4 book ai didi

java - 启动和关闭指向 Web 应用程序的 native 浏览器

转载 作者:行者123 更新时间:2023-12-01 05:43:49 26 4
gpt4 key购买 nike

大家好,Stack Overflow 的 friend 们,我确实有一个业务问题,希望获得一些关于如何解决它的答案/指示/想法。也许这已经在其他一些主题中提到过,但到目前为止我在互联网上搜索但无法找到直接的答案..

业务问题:我们的一位客户希望拥有一个基于 Java Web 的应用程序,但作为桌面应用程序启动。即,客户希望双击桌面上某个位置的图标,然后启动一个浏览器窗口,指向将在 Jetty 服务器上本地运行的 Web 应用程序的 URL/上下文。当用户单击图标时启动。

到目前为止,我已经弄清楚如何打包我的应用程序并创建一个 exe 启动器(使用 install4j)(基本上我使用 jetty 服务器创建了一个可执行的 jar 文件,并将我的 Web 应用程序与启动类打包在一起,该启动类将启动 Jetty 服务器和将其指向 Web 应用程序的上下文)。

我的问题是我不知道如何启动( native )网络浏览器并将其指向网络应用程序的 URL/上下文。

我找到了启动用户默认浏览器的代码:

String url = "http://www.google.com";
java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));

这很好,但还不够好。它不够好的原因是,当用户关闭浏览器时,Jetty 服务器仍然在后台运行。我想要的是当用户关闭浏览器时我还想检测此事件并关闭 Jetty 服务器(请不要使用任何 Active X 或 JavaScript)

有人提到创建一个 JPanel 并使用一些 DJ native swing API 在其中包含一个 native 浏览器,但我不知道如何执行此操作。

有什么想法吗?

提前非常感谢

最佳答案

这是一段代码仅供引用。您可以在进程中 fork native 浏览器并将 java Process 对象返回到您的 java 代码。您可以调用 processObject.waitFor() 方法来等待所调用的进程终止。

启动器:

public class Launcher implements Runnable {

public void run() {
Process p;
try {
p = Runtime.getRuntime().exec("notepad.exe");
p.waitFor();

// Do something after the forked process terminates
System.out.println("The browser is exit");
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

主类:

public class TestProcess {

public static void main(String[] args) throws Exception {
new Thread(new Launcher()).run();
}

}

关于java - 启动和关闭指向 Web 应用程序的 native 浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com