Wir bündeln die Java 6 JRE mit unserem Anwendungsinstallationsprogramm, so dass es auf jedem Rechner ausgeführt werden kann, aber das macht die Anwendung ein wenig schwerer. Daher planen wir, die Größe der JRE zu reduzieren. Kann jemand, der diese Art von Aufgabe bereits erledigt hat, eine Anleitung für das weitere Vorgehen geben?
Antworten
Zu viele Anzeigen?Sehen Sie sich die README-Datei im JRE-Verzeichnis an. Der Abschnitt "Optionale Dateien und Verzeichnisse" listet eine Reihe von Dateien auf, die aus der Oracle/Sun JRE entfernt werden können, wenn Sie sie zusammen mit Ihrer Anwendung packen.
Ich verwende eine Ant-Build-Datei, um die JRE beim Erstellen einer Installation vom Systeminstallationsverzeichnis in das Paketverzeichnis zu kopieren. Legen Sie die Liste der auszuschließenden Dateien in einer separaten Datei ab und verwenden Sie das Attribut "excludesfile", um diese Liste zu laden:
<copy todir="${deployed_jre_dir}">
<fileset dir="${system_jre_dir}" excludesfile="jre_excludes.properties"
</copy>
Beispiel für die Datei jre_excludes.properties:
# per the README from the JRE, these files are for the browser plugin and are not needed otherwise
#bin/javaw.exe
bin/javaws.exe
bin/javacpl.exe
bin/jucheck.exe
bin/jusched.exe
bin/wsdetect.dll
bin/NPJPI*.dll
bin/NPJava*
bin/NPOJI610.dll
bin/RegUtils.dll
bin/axbridge.dll
bin/deploy.dll
bin/jpicom.dll
bin/javacpl.cpl
bin/jpiexp.dll
bin/jpinscp.dll
bin/jpioji.dll
bin/jpishare.dll
lib/deploy.jar
lib/plugin.jar
lib/javaws.jar
lib/javaws/messages*
lib/javaws/miniSplash.jpg
bin/new_plugin**
bin/jureg*
bin/ssv*
bin/jqs*
bin/jp2*
lib/deploy/**/*
# if you do not need any RMI stuff
# wildcard to catch .exe files on Windows
# note rmi.dll is not excluded, which is needed by jconsole; add rmi.dll if you do not need jsonsole
bin/jbroker*
bin/java-rmi*
bin/rmid*
bin/rmiregistry*
bin/tnameserv*
bin/orbd*
bin/servertool*
# do not include QuickTime
# this will be in the jre dir for machines that have QT installed
lib/ext/QTJava.zip
Für meine Java 8 Update 144 Desktop-Anwendung schließe ich die 2 großen Java FX-Dateien aus:
bin/jfxwebkit.dll // ~34 MB unpacked
lib/ext/jfxrt.jar // ~17 MB unpacked
Die gezippte jre-Datei ist 49 MB statt 66 MB groß.
Für mich ist dies ein akzeptabler Kompromiss zwischen reduzierter Größe und erhöhter Komplexität (und möglichen Fehlern).
Sie versuchen, die Größe einer Standard-JRE zu reduzieren? Tun Sie das nicht. Sie können eine alternative JRE bündeln, die möglicherweise kleiner ist. Eine Liste finden Sie unter diese Wikipedia-Seite . Wie immer sollten Sie auf Kompatibilitätsprobleme achten und Ihre Anwendung gründlich testen.
Eine andere und sicherere Möglichkeit besteht darin, lediglich die Installation einer JRE auf dem Zielrechner zu verlangen.