Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何减小JRE的大小?_Java - Fatal编程技术网

Java 如何减小JRE的大小?

Java 如何减小JRE的大小?,java,Java,我最近尝试打包一个应用程序,但发现通过捆绑默认的JRE,该应用程序将其文件大小增加了约138MB。我希望通过剥离我不需要的组件(例如Corba、JavaFX、XML解析)来减少JRE的大小,从而在将其捆绑到应用程序中时减少增加的量 有几个问题,比如,给出了一些关于删除哪些组件的指导原则,但没有一个真正描述了如何减少组件。我需要做什么来减少JRE的大小?有一些工具吗?我是否只是下载源代码,然后破解我不想要的类?我是否编辑当前安装的JRE?我真的不知道从哪里开始。我自己还没有测试过这个,但经过一些搜

我最近尝试打包一个应用程序,但发现通过捆绑默认的JRE,该应用程序将其文件大小增加了约138MB。我希望通过剥离我不需要的组件(例如Corba、JavaFX、XML解析)来减少JRE的大小,从而在将其捆绑到应用程序中时减少增加的量


有几个问题,比如,给出了一些关于删除哪些组件的指导原则,但没有一个真正描述了如何减少组件。我需要做什么来减少JRE的大小?有一些工具吗?我是否只是下载源代码,然后破解我不想要的类?我是否编辑当前安装的JRE?我真的不知道从哪里开始。

我自己还没有测试过这个,但经过一些搜索,我发现了一些东西

该指南为您提供了如何捆绑应用程序的基本视图(听起来您已经拥有了该应用程序)。在那里,我遵循了,在该页面的“运行时”下,您可以明确地从绑定中包括或排除文件/文件夹

根据他们的文件

“默认情况下,捆绑应用程序只包含jre/目录的内容。排除所有可执行内容(即bin/、jre/bin/)。可以分别使用嵌套和元素包含或排除其他内容。”

由此,我获取了他们的示例代码并添加了一个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\u HOME/README.txt
。查找文本
可选文件和目录
,您将看到它的标题。我正在我的计算机上安装JRE7,JRE6自述文件中似乎没有任何内容


我知道你正在寻找的示例不起作用,但我希望它能帮助你解决这个问题。

我不知道Mac商店,但你就不能不捆绑JRE吗?大多数人已经有了。事实上,我认为它是由苹果电脑提供的default@Oxinabox苹果在2010年左右停止了在OSX中使用Java,所以只有那些出去下载它的人才拥有它。无论如何,Mac App Store要求所有应用都是自包含的,并且不要求任何默认情况下未在OS X中安装的应用,因此,需要将JRE捆绑到应用中(最好是不添加138 MB的应用)。也许它会自动检测是否已安装JRE,如果没有,那么在你的应用程序安装过程中下载它?@Saposhiente不幸的是,Mac应用程序商店规则也不允许这样做。其想法是用户将下载该应用程序,并拥有运行该应用程序所需的一切。