2012-04-17 121 views
4

我有一个名为snake.html的html文件,我想将其放入jar中。当jar运行时,主类应该在浏览器中打开这个html文件。我曾尝试:打开.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()); 
} 

,如果我只是运行此代码,但是当我罐子它(和HTML文件),其中一期工程,我得到以下异常:

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有两个目录,蛇和WebContent。 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 2012-04-17 17:45:44

0

尝试加载snake.html文件是这样的:

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

(HTML)..inside一个罐子。当jar运行时,主类应该在浏览器中打开这个html文件。

浏览器不是为了在Java档案中显示HTML而设计的。 Java组件如JEditorPane可以。如果HTML在Swing组件中呈现给您满意的状态,请使用它。否则,将有必要

  1. 通过URL找到资源。
  2. 将其解压到本地文件系统上的某个位置。
  3. 使用浏览器打开文件(最简单的方法是使用Desktop.open(File))。