2012-04-17 8 views
4

jakeの中に入れたいと思うsnake.htmlというhtmlファイルがあります。 jarが実行されると、メインクラスはブラウザでこのhtmlファイルを開きます。私が試してみました:私はこのコードを実行する場合、私はそれ(HTMLファイル)をjarファイルときに動作.JARファイル内のHTMLファイルを開きます

public static void main(String[] args) throws IOException, URISyntaxException { 
    URL url = Snake.class.getResource("/WebContent/snake.html"); 
    System.out.println(url); 
    // relative to the class location 
    Desktop.getDesktop().browse(url.toURI()); 
} 

I次の例外を取得:

Exception in thread "main" java.io.IOException: Failed to mail or browse 
     jar:file:/Users/~user~/Desktop/Snake%20v0.1.jar!/WebContent/snake.html. 
     Error code: -10814 
at apple.awt.CDesktopPeer.lsOpen(CDesktopPeer.java:52) 
at apple.awt.CDesktopPeer.browse(CDesktopPeer.java:45) 
at java.awt.Desktop.browse(Desktop.java:368) 
at snake.Snake.main(Snake.java:26) 

イム私はクラスパスを持っている場合は不思議問題を起こしたり、ファイルにjarを正しく指定していないかもしれません。 jarには、snakeとWebContentという2つのディレクトリがあります。 Snakeにはsnake.classファイルがあり、WebContentにはsnake.htmlがあります。

何かすべてのヘルプ/批評をいただきました。

答えて

6

最初にファイルを解凍する必要があります。以下のような

何か:

public static void main(String[] args) throws IOException, URISyntaxException { 
    URL url = Snake.class.getResource("/WebContent/snake.html"); 


    File temp = File.createTempfile(); 
    temp.deleteOnExit(); 

    // Copy content 

    Desktop.getDesktop().browse(temp.getAbsolutePath()); 
} 
+0

これは私が探していたものです。どうもありがとうございました – shortspider

0

このようなsnake.htmlファイルをロードするようにしてください:

ClassLoader.getSystemResource("/WebContent/snake.html"); 
1

(HTML)は、jarファイルを..inside。 jarが実行されると、メインクラスはブラウザでこのhtmlファイルを開きます。

ブラウザはJavaアーカイブ内にHTMLを表示するように設計されていません。 JavaコンポーネントのようなJEditorPaneすることができます。 Swingコンポーネント内でHTMLが満足のいくものになったら、それを使用してください。それ以外の場合は、必要があります

  1. URLでリソースを特定します。
  2. ローカルファイルシステム上の場所に展開します。
  3. ブラウザを使用してファイルを開きます(最も簡単な方法はDesktop.open(File)を使用しています)。
関連する問題