[java] 是否有可能/如何在JAR中嵌入和访问HTML文件?


0 Answers

一旦你有了URI,你就可以把它转换成一个文件,然后回到一个URI,然后回到一个URL。 只需将URI转换为URL即可获得更好的成功

Question

我现在有些被封锁了:我写了一个非常复杂的Java桌面应用程序(没有Applet / Web App!),它有自己的“用户手册”。 本手册由一些HTML和JPG文件组成。 本手册显示在使用JEditorPane的应用程序中的“帮助菜单”中。

到现在为止还挺好。 只要我用Eclipse启动Programm就可以很好地工作。 只要我创建部署版本作为一个可运行的jar(用launch4j将其包装到.exe中),HTML“查看器”无法显示用户手册(图像丢失)。

我明白为什么会发生这种情况,但我不知道如何解决这个问题。

我的应用程序通过getClass()。getResource()加载它的资源(属性文件,图标等)。 例子:

this.setIconImage(new ImageIcon(getClass().getResource("/images/dialog-question.png")).getImage());

stream = new BufferedInputStream(MABIUpdater.class.getResourceAsStream("/settings.properties"));

就像我之前说过的,这个工作得很好(从Eclipse内部启动应用程序,或者作为一个包装的可执行文件或runnable-jar。

所以我试图访问我的HTML“手册”也是这样的:

File manual = new File(getClass().getResource("/manual/help.html").toURI());

jEditorPane.setPage(manual.toURI().toURL());

这不是真的工作。 通过Eclipse启动程序我看到手册,但缺少图像。 启动它通过jar / exe我得到一个空框架。

那么如何实现这一目标有什么“窍门”? 我想一个问题是HTML页面本身,因为它不能访问该jar中的链接图像。 这是一个非常小的HTML文件,不起作用(图像丢失):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="de">
    <head>
        <title>Manual</title>
    </head>
    <body>
        <h1>Example: </h1>
        <p>fubar</p>
        <img style="display: block; text-align: center;" src="../manual/img/Shot01.png" width="666" height="644" border="0" alt="Bildtext">
        <p><a href=\"http://www.google.com/\">blablubb</a></p>
    </body>
</html>

我希望我的问题是清楚的,有人有一个想法;)。

编辑:所有需要的HTML文件和图像都在JAR文件/类路径中。 (只是为了使这个更清晰)




Related