2010-12-08 126 views
19

我们将Java 6 JRE与我们的应用程序安装程序捆绑在一起,以便它可以在任何机器上运行,但这会使应用程序变得更重一些。所以我们计划减少JRE的大小。如果有人已经完成了这样的任务,能否请你提供指导以推进这项工作?缩小JRE的尺寸

回答

21

查看JRE目录中的自述文件。 '可选文件和目录'部分列出了许多可以从Oracle/Sun JRE中删除的文件,如果您将它们打包在您的应用程序中。

创建安装时,我使用Ant构建文件将JRE从系统安装位置复制到软件包目录。把你想要排除在一个单独的文件的文件列表,并使用“excludesfile”属性来加载这个名单:

<copy todir="${deployed_jre_dir}"> 
    <fileset dir="${system_jre_dir}" excludesfile="jre_excludes.properties" 
</copy> 

样品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 
+0

在可选文件列表中它说java.exe也是可选的。所以没有这个如何启动我的应用程序。 – asela38 2010-12-08 12:35:20

0

您正试图降低标准JRE的尺寸?不要这样做。您可以选择捆绑一个可能更小的替代JRE。可以在this Wikipedia page找到一个列表。一如既往,谨防兼容性问题并彻底测试您的应用程序。

另一种更安全的方法是只需要在目标机器上安装JRE。

0

一些更新信息:由于Java 8有一个名为jrecreate的官方Oracle工具用于创建小型嵌入式JRE软件包。

0

对于我的Java 8更新144桌面应用程序,我排除2个大的Java FX文件:

bin/jfxwebkit.dll // ~34 MB unpacked 
    lib/ext/jfxrt.jar // ~17 MB unpacked 

压缩的JRE是49 MB而不是66 MB。

对我来说,这是一个可以接受的折中尺寸和增加的构建复杂度(和潜在的错误)之间的权衡。