Czy jest możliwe / jak osadzać i uzyskiwać dostęp do plików HTML w JAR?
Jestem teraz trochę zablokowany: napisałem dość złożoną aplikację Java Desktop (bez apletu / aplikacji internetowej!), która ma własną „instrukcję obsługi”. Ten podręcznik składa się z niektórych plików HTML i JPG. Ten podręcznik jest wyświetlany w „Menu pomocy” w mojej aplikacji za pomocą JEditorPane.
Jak na razie dobrze. Działa to bardzo dobrze, jeśli uruchomię Programm z Eclipse. Gdy tylko utworzę wersję wdrożenia jako runable jar (która zostanie umieszczona w pliku .exe z launch4j), „Przeglądarka” HTML nie może wyświetlić instrukcji obsługi (brak obrazów).
Rozumiem, dlaczego tak się dzieje, ale nie mam pojęcia, jak to naprawić / obejść.
Moja aplikacja ładuje swoje zasoby (pliki właściwości, ikony itp.) Za pośrednictwem getClass (). GetResource (). Przykłady:
this.setIconImage(new ImageIcon(getClass().getResource("/images/dialog-question.png")).getImage());
stream = new BufferedInputStream(MABIUpdater.class.getResourceAsStream("/settings.properties"));
Jak powiedziałem wcześniej, działa to bardzo dobrze (uruchamianie aplikacji z poziomu Eclipse OR jako opakowanego pliku wykonywalnego lub runnable-jar).
Próbowałem więc uzyskać dostęp do moich „Podręczników” HTML w ten sposób:
File manual = new File(getClass().getResource("/manual/help.html").toURI());
jEditorPane.setPage(manual.toURI().toURL());
To naprawdę nie działa. Uruchamianie programu za pomocą Eclipse widzę podręcznik, ale z brakującymi obrazami. Uruchomienie go za pomocą jar / exe otrzymuję pustą ramkę.
Czy więc jest jakaś „sztuczka” na to, jak to osiągnąć? Myślę, że jednym z problemów jest sama strona HTML, ponieważ nie może uzyskać dostępu do połączonych obrazów w tym słoiku. Oto bardzo mały przykład pliku HTML, który nie działa (brak obrazu):
<!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>
Mam nadzieję, że mój problem jest jasny i ktoś ma pomysł;).
Edytuj: wszystkie wymagane pliki HTML i obrazy znajdują się w pliku JAR / ścieżce klas. (aby to wyjaśnić)