有时,我在从 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 调用启动)
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 调用代码)
最佳答案
试试这个-->
import java.awt.Desktop;
import java.net.URI;
if(Desktop.isDesktopSupported())
{
Desktop.getDesktop().browse(new URI("http://www.google.com"));
}
关于Java打开浏览器进程导致30秒延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822566/