Ich habe JRE mit meiner App gebündelt, indem ich einfach die Dateien von $JAVA_HOME/jre
in die Verteilung meiner App kopiert habe. Das mag zwar gegen den Geist von Java sein, aber es reduziert mögliche Probleme, indem sichergestellt wird, dass meine App auf einer JRE-Version ausgeführt wird, auf der sie getestet wurde (einschließlich der Bitness; ich verwende JNI, was erfordert, dass die JRE eine 32-Bit-Version ist) ).
Es funktioniert gut, aber die gesamte Distribution ist etwas groß, also könnten einige unnötige Dateien weggelassen werden? Tatsächlich enthält $JAVA_HOME/jre/README.txt
den folgenden Hinweis:
Die Dateien, aus denen die Java SE Runtime Environment besteht, sind unterteilt in: zwei Kategorien: erforderlich und optional. Optionale Dateien können ausgeschlossen werden aus Redistributionen der Java SE Runtime Environment bei der Verkäufer Ermessen.
Der folgende Abschnitt enthält eine Liste der Dateien und Verzeichnisse, die kann optional bei Redistributionen mit der Java SE Runtime entfallen Umgebung. Alle Dateien, die nicht in diesen Listen der optionalen Dateien enthalten sind, müssen in Umverteilungen der Laufzeitumgebung enthalten.
... Bei der Neuverteilung der JRE unter Microsoft Windows als private Anwendungslaufzeit (nicht für andere Anwendungen verfügbar) Mit einem benutzerdefinierten Startprogramm sind auch die folgenden Dateien verfügbar wahlweise. Dies sind Bibliotheken und ausführbare Dateien, die verwendet werden für Java-Unterstützung in Browsern von Internet Explorer und Mozilla-Familie; Diese Dateien werden in einer privaten JRE-Umverteilung nicht benötigt.
Was mich verwirrt ist, dass die Liste der optionalen Dateien unter anderem enthält:
%Vor% Wie kann java/javaw.exe
optional sein? Wie soll ich eine Java-Anwendung ohne sie starten? Offensichtlich weiß ich nichts (wahrscheinlich), oder die Anweisungen sind einfach falsch.
Bei der Weitergabe der JRE unter Microsoft Windows als private Anwendungslaufzeit (auf die andere Anwendungen nicht zugreifen können) mit einem benutzerdefinierten Startprogramm sind die folgenden Dateien ebenfalls optional.
Wenn Sie die JVM in Ihre eigene Anwendung einbetten (indem Sie sie mit ihren gemeinsam genutzten Bibliotheken verknüpfen), benötigen Sie die eigenständigen Startprogramme nicht. Ich denke, Eclipse funktioniert zum Beispiel so.
Wenn Ihre App die ausführbare Java-Datei verwendet (zB über eine Batch-Datei), dann brauchen Sie diese natürlich.
Tags und Links java installation