堆栈溢出专家,您好,我确实有业务问题,想就如何解决这个问题获得一些答案/指标/想法。也许在其他主题中已经提到了这一点,但是到目前为止,我在互联网上进行搜索,但找不到直接的答案。
业务问题:我们的一位客户希望拥有一个基于Java Web的应用程序,但希望将其作为桌面应用程序启动。
也就是说,客户端希望在桌面上的某个位置双击图标,并启动一个浏览器窗口,该窗口指向Web应用程序的URL /上下文,该URL /上下文将在Jetty服务器上
本地 运行,当用户单击时启动在图标上。
到目前为止,我已经弄清楚了如何打包我的应用程序并创建一个exe启动器(使用install4j)(基本上,我使用jetty服务器创建了一个可执行jar文件,并将我的Web应用程序与一个启动类打包在一起,它将启动Jetty服务器并将其指向Web应用程序的上下文)。
我的问题是我不知道如何启动(本机)Web浏览器并将其指向Web应用程序的URL /上下文。
我发现以下代码可以启动用户的默认浏览器:
String url = "http://www.google.com";
java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
很好,但还不够好。而且它不够好的原因是,当用户关闭浏览器时,Jetty服务器仍将在后台运行。我想要的是当用户关闭浏览器时,我也想检测到此事件并关闭Jetty服务器(请不要使用任何活动的X或JavaScript)
有人提到创建一个JPanel并在其中使用一些DJ本机swing API包含本机浏览器,但是我不知道如何执行此操作。
有任何想法吗?
提前谢谢了
这是一段代码,仅供参考。您可以在进程中派生本机浏览器,然后将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();
}
}
我想在Android上使用Appium来自动化下面的场景 首先在Chrome中打开一个网页。网页包含注册表单 填写表单,然后单击提交按钮 提交按钮通过uri打开我的本机应用程序(与我们通过点击链接市场打开Google Play的行为相同://...) 最后与应用程序交互 我可以为第1到3步实现自动化,但在第4步就失败了。 这对Appium有可能吗?有没有其他测试框架可以自动化这样的场景?
启动 1. 轻触主画面上您想启动的应用程序图标。 显示LiveArea™。 2. 轻触[开始]。 中断/继续 按下PS键即可返回LiveArea™。若要继续,请轻触[继续]。 关闭 1. 按下PS键。 返回LiveArea™。 2. 请由画面右上角将LiveArea™撕下。
我做了一个jsf应用程序。这个应用程序有一个包含开始、停止按钮的菜单。当按下开始时,应用程序开始从网站获取数据,并更新其数据库。应用程序还有更新过程的进度条。但是,这个过程需要很长时间才能完成。我希望当我关闭浏览器时,它应该继续更新数据库。此外,当我再次打开它时,我应该得到以前的状态。然而,这并没有发生。当我关闭浏览器时,应用程序也关闭了。我该怎么办? 谢谢。
我正在使用Selenium C# Webdriver进行一些自动化测试。完成测试后,我想关闭浏览器。 我使用以下方法初始化驱动程序: 然后在做完某事后,我正在关闭它 有没有办法关闭它?
我正在运行一个spring启动应用程序,除了尝试关闭它之外,一切都很好。我在下面的代码中出错 该错误在最后一行生成,spring boot将在2秒等待完成之前关闭level2List,如下所示 是否有任何方法可以命令关闭过程,或确保在关闭之前我没有使用level2List? 沙布尔酒店
我有两个应用程序需要通过深层链接进行通信:Flutter Web应用程序和iOS上的Flutter移动应用程序。 基本上,流程需要是我单击在移动浏览器上运行的Web应用程序中的一个按钮,然后应该触发移动应用程序启动。 我遵循了设置深度链接的指定说明,并有两个观察结果: 一切都在Android上完美运行。 如果我在任何其他iOS应用程序(日历,MS Teams等)中点击链接,它就可以正常工作。这使我