Java打开浏览器进程导致30秒延迟

标签 java windows process cmd

有时,我在从 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/

相关文章:

java - eclipse中如何解决一个项目中不同模块之间的循环依赖?

c - 如何判断 fgets(stdin) 是否会在 Windows 上阻塞?

c++ - 如何使用C读取NTFS文件系统的图元文件

asp.net - 获取当前 Windows 用户 VB.net

java - 如何使用removeAll()从JFrame中删除所有组件?

java - 如何设置基本的 Jersey/Grizzly 2.21 SSL 启动配置

c# - 选择 'performance' 选项卡调用 Windows 任务管理器

PHP在浏览器中长时间运行的进程

C、使用信号让父进程和子进程一起工作

java - @Column 和 @Enumerated 在嵌入实体中不起作用