2014-02-09 2 views
8

Недавно я попробовал упаковку Java app for distribution in the Mac App Store, но обнаружил, что, объединив стандартную JRE, приложение увеличило размер своего файла примерно на 138 МБ. Я хотел бы уменьшить размер JRE, удалив компоненты, которые мне не нужны (например, Corba, JavaFX, XML-синтаксический анализ), что приводит к меньшему увеличению при наборе его в приложение.Как уменьшить размер JRE?

Есть несколько вопросов, таких как this one, которые дают некоторые рекомендации о том, какие компоненты необходимо удалить, но ни один из них не описывает как, чтобы сократить его. Что мне нужно сделать, чтобы уменьшить размер JRE? Есть ли определенные инструменты? Я просто загружаю источник и вырываю классы, которые мне не нужны? Могу ли я изменить установленную в настоящее время JRE? Я не уверен, с чего начать.

+0

Я не знаю магазина Mac, но разве вы не могли бы просто расслоить JRE? У большинства людей это уже есть. Действительно, я думаю, что он появился на Mac по умолчанию –

+0

@ Oxinabox Apple прекратила включать Java в OS X примерно в 2010 году, поэтому только те, кто выходят и скачивают ее, имеют это. Независимо от этого, Mac App Store требует, чтобы все приложения были автономными и не требовали ничего, что не было установлено по умолчанию в OS X, поэтому почему JRE необходимо добавить в приложение (желательно тот, который не добавляет 138 МБ). – Thunderforge

+0

Возможно, он автоматически определяет, установлена ​​ли JRE, а если нет, то заходите и загружаете ее во время установки вашего приложения? – Vitruvius

ответ

2

Я не проверял это сам, но после того, как искал то, что нашел.

Руководство Packaging a Java App for Distribution on a Mac дает вам базовый взгляд на то, как связать приложение (похоже, оно уже появилось). Оттуда я следил за docs for app bundler, на этой странице в разделе «runtime» вы видите, что вы можете явно включать или исключать файлы/папки из комплекта.

По их Документах

"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."

Из того, что я взял их образцы кода и добавил исключить заявление:

<-- 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 readme, похоже, ничего нет.

Я знаю, что это не работает на примере, который вы ищете, но я надеюсь, что это поможет вам понять это.

Смежные вопросы