如何减小JRE的大小?

时间:2014-02-09 06:11:02

标签: java

我最近尝试打包Java app for distribution in the Mac App Store,但发现通过捆绑默认JRE,该应用程序将文件大小增加了大约138 MB。我想通过剥离我不需要的组件(例如Corba,JavaFX,XML解析)来减小JRE的大小,因此当我将它捆绑到应用程序时会导致更小的增长。

有几个问题,例如this one,提供了一些关于要删除哪些组件的指导,但没有一个实际描述如何去减少它。我需要做些什么来减小JRE的大小?有某些工具吗?我只是下载源代码并破解我不想要的类吗?我是否编辑了当前安装的JRE?我不确定从哪里开始。

1 个答案:

答案 0 :(得分:2)

我自己没有对此进行测试,但经过一番搜索后发现了我所发现的内容。

Packaging a Java App for Distribution on a Mac指南可让您基本了解如何捆绑应用(听起来就像您已经拥有的那样)。从那里我跟着docs for app bundler,在“运行时”下的那个页面上,你看到你可以明确地包含或排除捆绑中的文件/文件夹。

根据他们的文档

"By default, only the contents of the jre/ directory will be included with the bundled application. All executable content (i.e. bin/, jre/bin/) is excluded. Additional content can be included or excluded using nested <include> and <exclude> elements, respectively."

从那里我拿了他们的示例代码并添加了一个exclude语句:

<-- Import environment variables -->
<property environment="env"/>

<-- Define the appbundler task -->
<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask"/>

<-- Create the app bundle -->
<target name="bundle-swingset" depends="package">
    <bundleapp outputdirectory="."
        name="Test"
        displayname="Test"
        identifier="com.oracle.javafx.swing.Test"
        shortversion="1.0"
        applicationCategory="public.app-category.developer-tools"
        mainclassname="com/javafx/main/Main">
    <runtime dir="${env.JAVA_HOME}">
            <exclude name="Java IDL Server Tool" /> <!-- exclude from bundle -->
    </runtime>
    <classpath file="${user.home}/bin/javafx-samples-2.2.0/SwingInterop.jar"/>
        <option value="-Dapple.laf.useScreenMenuBar=true"/>
    </bundleapp>
</target>

可以在JRE根目录中找到可选排除的完整列表 - $JAVA_HOME/README.txt。查找文本Optional Files and Directories并找到它的标题。我正在看我的计算机上的JRE7安装,JRE6自述文件似乎没有任何内容。

我知道这不是你正在寻找的例子,但我希望它可以帮助你搞清楚。