【发布时间】:2013-08-28 21:28:34
【问题描述】:
我现在有点受阻:我编写了一个非常复杂的 Java 桌面应用程序(不是 Applet/Web 应用程序!),它有自己的“用户手册”。本手册包含一些 HTML 和 JPG 文件。本手册使用 JEditorPane 显示在我的应用程序的“帮助菜单”中。
到目前为止一切顺利。只要我用 Eclipse 启动程序,这就会很好地工作。一旦我将部署版本创建为可运行的 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 文件/类路径中。 (只是为了更清楚)
【问题讨论】:
标签: java html swing jar jeditorpane