Я несколько заблокирован прямо сейчас: я написал довольно сложное настольное приложение Java (без апплета/веб-приложения!), У которого есть собственное «Руководство пользователя». Это руководство состоит из нескольких файлов HTML и JPG. Это руководство отображается в «Меню справки» в моем приложении с помощью JEditorPane.
Все идет нормально. Это работает очень хорошо, пока я запускаю программу с Eclipse. Как только я создаю версию развертывания в виде исполняемого файла jar (который заворачивается в .exe с помощью launch4j), 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-страница, потому что она не может получить доступ к связанным изображениям в этой банке. Вот действительно небольшой пример 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/пути к классам. (просто чтобы было понятнее)