2012-02-09 2 views
4

손이 필요합니다. 안드로이드 프로젝트에서 android-maven-plugin 3.0.0과 maven-external-dependency-plugin 0.4를 사용하고 있습니다. 나는 의존성으로 다른 저장소에서이 라이브러리를 사용하고 있습니다 :dex를 만들려고 할 때 android-maven-plugin으로 인해 java.lang.OutOfMemoryError가 발생합니다.

[INFO] UNEXPECTED TOP-LEVEL ERROR: 
[INFO] java.lang.OutOfMemoryError: Java heap space 
[INFO] at com.android.dx.cf.code.OneLocalsArray.<init>(OneLocalsArray.java:46) 
[INFO] at com.android.dx.cf.code.OneLocalsArray.copy(OneLocalsArray.java:51) 
[INFO] at com.android.dx.cf.code.OneLocalsArray.copy(OneLocalsArray.java:33) 
[INFO] at com.android.dx.cf.code.Frame.copy(Frame.java:98) 
[INFO] at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:683) 
[INFO] at com.android.dx.cf.code.Ropper.doit(Ropper.java:639) 
[INFO] at com.android.dx.cf.code.Ropper.convert(Ropper.java:252) 
[INFO] at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:256) 
[INFO] at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:134) 
[INFO] at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:87) 
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:483) 
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455) 
[INFO] at com.android.dx.command.dexer.Main.access$400(Main.java:67) 
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394) 
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245) 
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) 
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) 
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:418) 
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329) 
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:206) 
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:174) 
[INFO] at com.android.dx.command.Main.main(Main.java:95) 

시도 :

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android-test</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.admob.android.ads</groupId> 
     <artifactId>admob-android</artifactId> 
     <version>4.0.4</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.code</groupId> 
     <artifactId>google-api-translate-java</artifactId> 
     <version>0.97</version> 
    </dependency> 
    <dependency> 
     <groupId>com.db4o</groupId> 
     <artifactId>db4o-core-java5</artifactId> 
     <version>${com.db4o.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.db4o</groupId> 
     <artifactId>db4o-cs-java5</artifactId> 
     <version>${com.db4o.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.james</groupId> 
     <artifactId>apache-mime4j</artifactId> 
     <version>0.6</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpmime</artifactId> 
     <version>4.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20090211</version> 
    </dependency> 
    <dependency> 
     <groupId>org.restlet.jee</groupId> 
     <artifactId>org.restlet</artifactId> 
     <version>${restlet.version}</version> 
    </dependency> 
</dependencies> 

종속성이 모두 만족하지만 내가 메모리 오류를 얻을, 기민성 안드로이드에 모든 항아리를 은혜를 모르는 시간은 때

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <forkMode>pertest</forkMode> 
     <argLine>-Xms1024m -Xmx2048m</argLine> 
     <testFailureIgnore>false</testFailureIgnore> 
     <skip>false</skip> 
    </configuration> 
</plugin> 

하거나 :

,321이 추가 메모리를 늘리 0

... 이런

또는 수출 MAVEN_OPTS :

export MAVEN_OPTS=-Xmx1024m 

문제가 해결되지 않을

내가 종속 파일의 클래스에 대한 경고의 오래된 클래스 형식으로 컴파일 될 수 있지만, 문제의 원인인지 확실하지 않습니다.

[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class 
[INFO] (org.osgi.framework.AdminPermission$1) that doesn't come with an 
[INFO] associated EnclosingMethod attribute. This class was probably produced by a 
[INFO] compiler that did not target the modern .class file format. The recommended 
[INFO] solution is to recompile the class from source, using an up-to-date compiler 
[INFO] and without specifying any "-target" type options. The consequence of ignoring 
[INFO] this warning is that reflective operations on this class will incorrectly 
[INFO] indicate that it is *not* an inner class. 

나는 피. 콘솔에서 디버깅을 사용하여 전체 출력을 확인할 수 있으므로 오류를 자세히 살펴볼 수 있습니다. http://pastebin.com/5DPBihH0

최고.

아줌 마야

답변

3

이것은 알려진이었다 고소했다. 그러나 나는 그것이 android-maven-plugin 버전 3.1.0에서 수정되었다고 생각한다. 최신 내용은 3.1.1입니다. pom.xml을 게시하지 않았으므로 그게 문제인지는 알 수 없지만 그 것처럼 보입니다. http://code.google.com/p/maven-android-plugin/issues/detail?id=146

그리고 또한 스프링 소스의 블로그 : 여기

<dex> 
    <jvmArguments> 
     <jvmArgument>-Xms256m</jvmArgument> 
     <jvmArgument>-Xmx512m</jvmArgument> 
    </jvmArguments>  
    </dex> 

가 자신의 사이트에보고 된 문제입니다 :

어떤 이유로 업그레이드 할 수없는 경우

,이 적용되는 구성입니다 http://blog.springsource.org/2011/11/07/updated-maven-support-for-android-projects/

+0

감사합니다. 베스트! – Damasia

0

나는 그것이 그 경고와 함께 연결되어 생각 :

[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class 
[INFO] (org.osgi.framework.AdminPermission$1) that doesn't come with an 
[INFO] associated EnclosingMethod attribute. This class was probably produced by a 
[INFO] compiler that did not target the modern .class file format. The recommended 
[INFO] solution is to recompile the class from source, using an up-to-date compiler 
[INFO] and without specifying any "-target" type options. The consequence of ignoring 
[INFO] this warning is that reflective operations on this class will incorrectly 
[INFO] indicate that it is *not* an inner class. 

답변을 도움이 될 것입니다 그 :

"Ignoring InnerClasses attribute" warning is killing Eclipse
What is the "Ignoring InnerClasses attribute" warning output during compilation?
http://code.google.com/p/maven-android-plugin/issues/detail?id=26

관련 문제