2009-03-02 3 views

risposta

39

Se si utilizza Java 6 o versioni successive, consultare l'API Desktop, in particolare browse. Usare in questo modo (non testato):

// using this in real life, you'd probably want to check that the desktop 
// methods are supported using isDesktopSupported()... 

String htmlFilePath = "path/to/html/file.html"; // path to your new file 
File htmlFile = new File(htmlFilePath); 

// open the default web browser for the HTML page 
Desktop.getDesktop().browse(htmlFile.toURI()); 

// if a web browser is the default HTML handler, this might work too 
Desktop.getDesktop().open(htmlFile); 
+0

Hey. Ancora non riesco a farlo funzionare. Ottengo il seguente errore: "Messaggio di errore: il sistema non riesce a trovare il percorso specificato." Questo è anche se ho dato il percorso esatto. –

+0

@TheSpecialOne - stai fornendo un percorso _local_ al file? ad esempio: su una finestra di windows, htmlFilePath sembrerebbe "c: \ path \ to \ file.html". Non utilizzare la sintassi dell'URL ... –

0

Ho usato BrowserLauncher2 con successo. Richiama il browser predefinito su tutte le piattaforme testate. Lo uso per la demo del software tramite JNLP. Il software scarica, esegue e guida il browser dell'utente a pagine di informazioni/feedback ecc.

JDK 1.4 e versioni successive, credo.

+0

Se l'URL della pagina viene modificato a causa dell'attività dell'utente, è possibile ottenere il nuovo URL utilizzando BrowserLauncher2? –

26

Ya, ma se si desidera aprire la pagina Web nel browser Web predefinito da un programma java, è possibile provare a utilizzare questo codice.

2

So che tutte queste risposte hanno sostanzialmente risposto alla domanda, ma qui è un codice per un metodo che fallisce con garbo.

Nota che la stringa può essere la posizione di un file HTML

/** 
* If possible this method opens the default browser to the specified web page. 
* If not it notifies the user of webpage's url so that they may access it 
* manually. 
* 
* @param url 
*   - this can be in the form of a web address (http://www.mywebsite.com) 
*   or a path to an html file or SVG image file e.t.c 
*/ 
public static void openInBrowser(String url) 
{ 
    try 
     { 
      URI uri = new URL(url).toURI(); 
      Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; 
      if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { 
       desktop.browse(uri); 
      } else { 
       throw new Exception("Desktop not supported, cannout open browser automatically"); 
      } 
     } 
    catch (Exception e) 
     { 
      /* 
      * I know this is bad practice 
      * but we don't want to do anything clever for a specific error 
      */ 
      e.printStackTrace(); 

      // Copy URL to the clipboard so the user can paste it into their browser 
      StringSelection stringSelection = new StringSelection(url); 
      Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); 
      clpbrd.setContents(stringSelection, null); 
      // Notify the user of the failure 
      WindowTools.informationWindow("This program just tried to open a webpage." + "\n" 
       + "The URL has been copied to your clipboard, simply paste into your browser to access.", 
        "Webpage: " + url); 
     } 
}