2014-02-09 3 views
8

최근에 나는 Java app for distribution in the Mac App Store을 포장하려고했지만 기본 JRE를 묶음으로써 파일 크기가 약 138MB 증가했습니다. 필자는 필요없는 요소 (예 : Corba, JavaFX, XML 구문 분석)를 제거하여 JRE의 크기를 줄이고 싶습니다. 따라서 응용 프로그램에 번들을 추가하면 그만큼 크기가 커집니다.JRE의 크기를 줄이려면 어떻게해야합니까?

this one과 같은 몇 가지 질문이 있는데, 제거 할 구성 요소에 대한 지침이 있지만 실제로는 을 설명하는 것은 없습니다.은이를 줄이려고합니다. JRE의 크기를 줄이려면 어떻게해야합니까? 특정 도구가 있습니까? 방금 소스를 다운로드하고 내가 원하지 않는 수업을 해킹합니까? 현재 설치된 JRE를 편집합니까? 나는 어디에서 시작해야할지 모르겠습니다.

+0

Mac 매장을 모르지만 JRE를 번들로 제공하지 못했습니다. 대부분의 사람들은 이미 그것을 가지고 있습니다. 실제로 나는 그것이 Mac에서 기본적으로 제공된다고 생각합니다. –

+0

@Oxinabox Apple은 2010 년경에 OS X에 Java를 포함하여 중단 했으므로 나가서 다운로드 한 사람들 만이 그것을 가지고 있습니다. 어쨌든 Mac App Store는 모든 응용 프로그램이 자체 포함되어 있어야하며 OS X에 기본적으로 설치되지 않은 항목이 필요하지 않으므로 JRE를 응용 프로그램에 번들해야하는 이유가 있습니다 (138 MB를 추가하지 않는 것이 좋음). – Thunderforge

+0

JRE가 이미 설치되었는지 여부를 자동으로 감지했는지 확인한 다음, 설치하지 않은 경우 JRE를 다운로드하십시오. – Vitruvius

답변

2

나는이 테스트를 직접하지는 않았지만 내가 찾은 것을 몇 가지 조사한 후에 발견했다.

가이드 Packaging a Java App for Distribution on a Mac 가이드는 앱을 번들하는 방법을 기본으로 제공합니다 (이미 가지고있는 것처럼 들리는). 거기에서 나는 docs for app bundler을 따라 갔고, 그 페이지에서 "runtime"아래에 명시 적으로 번들링에서 파일/폴더를 포함 시키거나 제외시킬 수 있습니다. 옵션 제외의 전체 목록은 JRE 루트에서 찾을 수 있습니다

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

: 자신의 문서 내가 그들의 샘플 코드를했다 및 exclude 문을 추가에서 해당

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

에 따르면

- $JAVA_HOME/README.txt. 텍스트 Optional Files and Directories을 찾으십시오. 그러면 그 헤더에 나타납니다. 내 컴퓨터에서 JRE7 설치를보고 있는데, JRE6 readme didnt에는 아무 것도없는 것 같습니다.

나는 이것이 당신이 찾고있는 예제를 작동하지 않는다는 것을 알고있다. 그러나 나는 당신이 그것을 이해하는 데 도움이되기를 희망한다.

관련 문제