2010-05-22 19 views
6

Estoy realizando un cambio en un conjunto de código para un proyecto Flex que no escribí y que estaba configurado para compilar usando tareas ant. Supongo que la base de código se mantuvo estable en la última comprobación, pero estoy teniendo problemas de memoria cuando intento construir un proyecto usando MXMLC y ant (vea el seguimiento de pila a continuación). Antes, solo recibía un error de falta de memoria. Intenté usar una máquina diferente y obtuve esta excepción más detallada (incluidos los problemas con el buscador de imágenes). He intentado usar varias versiones del SDK, he intentado reemplazar la etiqueta <mxmlc> con <exec executable="mxmlc"> sin suerte. Aquí está mi versión java en caso de que tenga algo que ver con eso:resultados de la tarea MXMLC Ant en java.lang.OutOFMemoryError

» java -version 
java version "1.6.0_20" 
Java(TM) SE Runtime Environment (build 1.6.0_20-b02-279-10M3065) 
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01-279, mixed mode) 

Cualquier ayuda sería apreciada. ¡Gracias!

Buildfile: build.xml 

compileSWF: 
    [echo] Compiling main.swf... 
    [mxmlc] Loading configuration file /Applications/Adobe Flash Builder 4 Plug-in/sdks/4.0.0beta2/frameworks/flex-config.xml 
    [mxmlc] Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space 
    [mxmlc]  at java.awt.image.PixelGrabber.setDimensions(PixelGrabber.java:360) 
    [mxmlc]  at sun.awt.image.ImageDecoder.setDimensions(ImageDecoder.java:62) 
    [mxmlc]  at sun.awt.image.JPEGImageDecoder.sendHeaderInfo(JPEGImageDecoder.java:71) 
    [mxmlc]  at sun.awt.image.JPEGImageDecoder.readImage(Native Method) 
    [mxmlc]  at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:119) 
    [mxmlc]  at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:246) 
    [mxmlc]  at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172) 
    [mxmlc]  at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136) 
    [mxmlc] /src/com/amtrak/components/map/MapAsset.mxml: Error: exception during transcoding: Failed to grab pixels for image /src/assets/embed_assets/images/zoomed_map_wide.jpg 
    [mxmlc] 
    [mxmlc] /src/com/amtrak/components/map/MapAsset.mxml: Error: Unable to transcode /assets/embed_assets/images/zoomed_map_wide.jpg. 
    [mxmlc] 
    [mxmlc] Error: Java heap space 
    [mxmlc] 
    [mxmlc] java.lang.OutOfMemoryError: Java heap space 
    [mxmlc]  at java.util.ArrayList.<init>(ArrayList.java:112) 
    [mxmlc]  at macromedia.asc.util.ObjectList.<init>(ObjectList.java:30) 
    [mxmlc]  at macromedia.asc.parser.ArgumentListNode.<init>(ArgumentListNode.java:30) 
    [mxmlc]  at macromedia.asc.parser.NodeFactory.argumentList(NodeFactory.java:116) 
    [mxmlc]  at macromedia.asc.parser.NodeFactory.argumentList(NodeFactory.java:97) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationGenerator.generateBinding(ImplementationGenerator.java:563) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationGenerator.generateBindingsSetupFunction(ImplementationGenerator.java:864) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationGenerator.generateBindingsSetup(ImplementationGenerator.java:813) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationGenerator.generateInitializerSupportDefs(ImplementationGenerator.java:1813) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationGenerator.generateClassDefinition(ImplementationGenerator.java:1005) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationGenerator.<init>(ImplementationGenerator.java:201) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationCompiler.generateImplementationAST(ImplementationCompiler.java:498) 
    [mxmlc]  at flex2.compiler.mxml.ImplementationCompiler.parse1(ImplementationCompiler.java:196) 
    [mxmlc]  at flex2.compiler.mxml.MxmlCompiler.parse1(MxmlCompiler.java:168) 
    [mxmlc]  at flex2.compiler.CompilerAPI.parse1(CompilerAPI.java:2851) 
    [mxmlc]  at flex2.compiler.CompilerAPI.parse1(CompilerAPI.java:2804) 
    [mxmlc]  at flex2.compiler.CompilerAPI.batch2(CompilerAPI.java:446) 
    [mxmlc]  at flex2.compiler.CompilerAPI.batch(CompilerAPI.java:1274) 
    [mxmlc]  at flex2.compiler.CompilerAPI.compile(CompilerAPI.java:1488) 
    [mxmlc]  at flex2.compiler.CompilerAPI.compile(CompilerAPI.java:1375) 
    [mxmlc]  at flex2.tools.Mxmlc.mxmlc(Mxmlc.java:282) 
    [mxmlc]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [mxmlc]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    [mxmlc]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    [mxmlc]  at java.lang.reflect.Method.invoke(Method.java:597) 
    [mxmlc]  at flex.ant.FlexTask.executeInProcess(FlexTask.java:280) 
    [mxmlc]  at flex.ant.FlexTask.execute(FlexTask.java:225) 
    [mxmlc]  at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    [mxmlc]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [mxmlc]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    [mxmlc]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    [mxmlc]  at java.lang.reflect.Method.invoke(Method.java:597) 

BUILD FAILED 
/src/build.xml:49: mxmlc task failed 

Respuesta

7

Dele a Java-VM más espacio en el montón, p.

java -Xmx1024M 

o lo que necesite :-). En Linux (y probablemente otros Unix), que podría hacer el truco con el binario de hormigas:

ANT_OPTS="-Xmx1024M" ant 
+0

Gracias. parece que funcionó, ¡pero solo cuando lo subí a 4GB! –

1

Yo tenía un problemas similares con compc. Lo único que me pareció de ayuda fue configurar fork = "true" maxmemory = "256m"

+0

¿De dónde determinó el número ** 256m ** de? –

4

Estábamos usando una hormiga para construir una aplicación de flexión en una máquina individual (sin el constructor de flex) y la única manera que solucionó el problema el error del espacio en el montón era aumentar el valor máximo en build.xml.

La configuración de ant_opts y java config no nos funcionó.

<mxmlc file="${src-cp}/CP_main.mxml" output="${bin-dir}/CP/CP_main.swf" 
    show-unused-type-selector-warnings="false" 
    static-link-runtime-shared-libraries="true" fork="true" maxmemory="1024m"> 

Más información http://tipila.com/tips/java-heap-error-when-building-flex-application-with-ant

+0

¿Por qué ** show-unused-type-selector-warnings ** es 'falso'? –

0

Si está iniciando una tarea Ant desde Flash Builder, ir a Preferences > Java > Installed JREs > Edit y añadir el argumento de línea de comandos apropiados para Java bajo predeterminados VM Argumentos, por ejemplo -Xmx4096M

0

En mi caso, estaba compilando varios archivos SWF diferentes cuando agregué el quinto que es cuando recibí el error de memoria. La forma en que lo resolví fue con un truco un poco. Genere nuevas JVM para cada swf que estaba compilando mediante el uso de la tarea ejecutiva.

<target name="main"> 
      <exec executable="ant" os="Mac OS X"> 
       <arg value="antTargetCompileSwf1"/> 
      </exec> 
      <exec executable="ant" os="Windows 2000,Windows NT,Windows XP,Windows 8"> 
       <arg value="antTargetCompileSwf1"/> 
      </exec> 
      <exec executable="ant" os="Mac OS X"> 
       <arg value="antTargetCompileSwf2"/> 
      </exec> 
      <exec executable="ant" os="Windows 2000,Windows NT,Windows XP,Windows 8"> 
       <arg value="antTargetCompileSwf2"/> 
      </exec> 
     </target> 

Este es un ejemplo en el que hacen referencia entre antTargetCompileSwf2 objetivo en el mismo fichero de construcción que contendría la tarea mxmlc que fue originalmente lanzando el error de memoria

Cuestiones relacionadas