【问题标题】:Java open browser process causes 30 seconds delayJava打开浏览器进程导致30秒延迟
【发布时间】:2014-07-18 10:15:01
【问题描述】:

有时我在默认浏览器中从 Java 代码打开 URL 时遇到问题:

基本上Java执行新进程,但浏览器在30秒后打开(似乎浏览器打开过程中有一些超时)。

我都试过了

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler http://google.com");

URI uri = new URI("http://google.com");
Desktop desktop = Desktop.getDesktop().browse(uri);

这两个调用都等待 30 秒,然后打开浏览器

我在this page底部找到了这种方法(通过cmd.exe调用start)

Runtime.getRuntime().exec("cmd");
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("start \"\" \"http://google.com\"");
stdin.close();
int returnCode = p.waitFor();

但是在打开默认浏览器之前它会等待同样的 30 秒。

如何让它一直即时打开?这次延迟我错过了什么?

EDT: 延迟仅影响第一次从 Java 应用程序调用浏览器。 (按下按钮时从 Swing ActionListener 调用代码)

【问题讨论】:

  • 正常打开浏览器需要多长时间?
  • 它会在 1-2 秒内打开

标签: java windows process cmd


【解决方案1】:

试试这个 -->

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

if(Desktop.isDesktopSupported())
{
  Desktop.getDesktop().browse(new URI("http://www.google.com"));
}

【讨论】:

  • 我试过Desktop.isDesktopSupported()它会立即执行并一直返回true。
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2021-10-16
  • 2019-12-01
  • 2022-01-20
  • 2014-07-25
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
相关资源
最近更新 更多