2014-07-18 32 views
1

有时候,我不得不从Java代码中的默认浏览器中打开URL的一个问题:Java开源浏览器进程导致30秒延时

基本的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秒后,打开浏览器

我发现这种方法(通过调用CMD.EXE启动)在底部this page

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应用程序调用浏览器。 (从摇摆的ActionListener按下按钮调用代码)

+2

如何长时间才能正常打开浏览器? –

+0

它在1-2秒内打开 – Artems

回答

0

试试这个 - >

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

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

我尝试过'Desktop.isDesktopSupported()'它立即执行并始终返回true。 – Artems