Question

We have a linux machine (Red Hat) to compile our flex (3.0) application. It's an ant task (which is called by maven-antrun-plugin).

We decided to change our build machine (same Red Hat).
So i copy/paste the FLEX_HOME repertory on the new machine (from the old one), install ant then checkout the project on the new machine.

Here is the log when i call : ant -buildfile build-flex.xml

Buildfile: build-flex.xml

version:
[echo] Version ${maven.pom.version}
[copy] Copying 1 file to /home/ad59aphr/build/pharerh-ihm/flex_resources

compile.release:
[mxmlc] Loading configuration file /exec/products/flex_sdk/frameworks/flex-config.xml
[mxmlc] /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient_381495.cache (No such >file or directory)

Most of the time it hangs up here with java using 100% cpu. Sometimes it shows a few warnings from the compilation but do not go further.

When i use the ant -debug -buildfile build-flex.xml, it shows the command executed :

[mxmlc] FlexTask.execute: -compiler.keep-generated-actionscript=true -compiler.incremental=true +flexlib=/exec/products/flex_sdk/frameworks -compiler.services=/home/ad59aphr/build/pharerh-ihm/WebContent/WEB-INF/flex/services-config.xml -metadata.description=PhareRH -metadata.title=PhareRH -compiler.accessible=true -compiler.optimize=true -compiler.strict=true -compiler.headless-server=true -load-config=/exec/products/flex_sdk/frameworks/flex-config.xml -compiler.source-path=/exec/products/flex_sdk/frameworks -compiler.source-path=/home/ad59aphr/build/pharerh-ihm/flex_resources -compiler.source-path=/home/ad59aphr/build/pharerh-ihm/flex_src -compiler.source-path=/home/ad59aphr/build/pharerh-ihm/flex_src_gen -compiler.context-root=/ -compiler.debug=false -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/Cairngorm.swc -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/Collator.swc -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/automation.swc -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/automation_agent.swc -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/automation_dmv.swc -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/qtp.swc -- /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient.mxml

I can't see any difference between the working machine (old one) and this new machine about the debug output.

I tried to copy the old .cache file to new machine (+ changing the number), it gives me :

compile.release:
[mxmlc] Loading configuration file /exec/products/flex_sdk/frameworks/flex-config.xml
[mxmlc] Failed to match the compile target with /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient_381495.cache. The cache file will not be reused.

I tried to change the -incremental to false in the build-flex.xml but same result : stuck.

I tried tu compile in root to avoid any rights problems, same result.

My build-flex.xml :

<?xml version="1.0" encoding="UTF-8"?>
<!-- $HeadURL: http://svnserver.mdp/pharerh/branches/G1R3/developpement/pharerh-ihm/build-flex.xml $ -->
<!-- WARNING: Eclipse auto-generated file.
              Any modifications will be overwritten.
              To include a user specific buildfile here, simply create one in the same
              directory with the processing instruction <?eclipse.ant.import?>
              as the first entry and export the buildfile again. -->
<project basedir="." default="release" name="iah-admin-ui">
    <property environment="env" />


    <property name="WebApp.location" value="${env.TOMCAT_HOME}/webapps/pharerh-ihm" />

    <property name="flexClient.location" value="${basedir}" />
    <property name="FLEX_HOME" value="${env.FLEX_HOME}" />
    <property name="FDS_CONFIG_FILE" value="${env.FLEX_HOME}/frameworks/flex-config.xml" />
    <property name="webcontent_location" value="${flexClient.location}/WebContent" />
    <property name="FDS_SERVICES_CONFIG_FILE" value="${flexClient.location}/WebContent/WEB-INF/flex/services-config.xml" />

    <taskdef resource="flexTasks.tasks" classpath="${env.FLEX_HOME}/ant/lib/flexTasks.jar" />

    <target name="version">
        <echo message="Version ${maven.pom.version}" />
        <copy file="${flexClient.location}/flex_templates/version.properties" toDir="${flexClient.location}/flex_resources/" overwrite="true">
            <filterset>
                <filter token="generated" value="# ATTENTION : Ce fichier est le resultat d'une generation automatique. Ne pas editer." />
                <filter token="version" value="${maven.pom.version}" />
            </filterset>
        </copy>
    </target>

    <target name="compile.release" depends="version">
        <mxmlc file="${flexClient.location}/flex_src/flexClient.mxml" keep-generated-actionscript="true" incremental="true" services="${FDS_SERVICES_CONFIG_FILE}" >
            <accessible>true</accessible>
            <optimize>true</optimize>
            <strict>true</strict>
            <headless-server>true</headless-server>
            <load-config filename="${FDS_CONFIG_FILE}" />
            <source-path path-element="${env.FLEX_HOME}/frameworks" />
            <source-path path-element="${flexClient.location}/flex_resources" />
            <source-path path-element="${flexClient.location}/flex_src" />
            <source-path path-element="${flexClient.location}/flex_src_gen" />
            <compiler.include-libraries dir="${flexClient.location}/flex_libs" append="true" >
                <include name="*.swc" />
            </compiler.include-libraries>
            <compiler.context-root>/</compiler.context-root>
            <debug>false</debug>
            <metadata description="PhareRH" title="PhareRH" />
        </mxmlc>
    </target>
    
    <target name="flex.wrapper">
        <html-wrapper 
            title="Bienvenue sur l'application Phare-rh"
            height="100%"
            width="100%"
            bgcolor="#869ca7"
            output="${webcontent_location}"
            swf="flexClient"
            template="express-installation"
            history="false"
            application="flexClient"
            file="flexClient.html"
            />
            
        <!-- Ajout des balises pour la gestion du cache dans le fichier html. -->
        <replace file="${webcontent_location}/flexClient.html">
            <replacetoken><![CDATA[<head>]]></replacetoken>
            <replacevalue><![CDATA[<head>

<!-- Gestion du cache -->
<meta http-equiv="expires" content="0" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache, must-revalidate, max-age=0" />
<meta http-equiv="Cache" Content="no store" />
<meta http-equiv="last-modified" content="" />
]]></replacevalue>
        </replace>
    </target>

    <target name="compile.debug" depends="version">
        <mxmlc file="flex_src/flexClient.mxml" keep-generated-actionscript="false" services="${FDS_SERVICES_CONFIG_FILE}">
            <accessible>false</accessible>
            <optimize>false</optimize>
            <strict>true</strict>
            <load-config filename="${FDS_CONFIG_FILE}" />
            <source-path path-element="${env.FLEX_HOME}/frameworks" />
            <compiler.include-libraries dir="flex_libs" append="true">
                <include name="*.swc" />
            </compiler.include-libraries>
            <debug>true</debug>
            <metadata description="PhareRH" title="PhareRH">
            </metadata>
        </mxmlc>
    </target>

    <target name="release" depends="compile.release">
        <move file="flex_src/flexClient.swf" todir="${webcontent_location}" overwrite="true" />
    </target>

    <target name="packaging" depends="compile.release, flex.wrapper">
        <move file="flex_src/flexClient.swf" todir="${webcontent_location}" overwrite="true" />
    </target>

    <target name="release-debug" depends="compile.debug">
        <move file="${APP_ROOT}/flex_src/flexClient.swf" todir="release" overwrite="true" />
    </target>

    <target name="release-no-compile">
        <echo message="WebAppLocation : ${WebApp.location}"/>
        <copy file="bin-debug/flexClient.swf" todir="${WebApp.location}" overwrite="true" />
    </target>

    <target name="properties-encoding">
        <exec command="native2ascii -encoding ISO8859_1 flex_resources/election.properties election.properties.ISO8859_1">
        </exec>
        <move file="election.properties.ISO8859_1" tofile="flex_resources/election.properties" overwrite="true" />

        <exec command="native2ascii -encoding ISO8859_1 flex_resources/phareRH.properties phareRH.properties.ISO8859_1">
        </exec>
        <move file="phareRH.properties.ISO8859_1" tofile="flex_resources/phareRH.properties" overwrite="true" />

        <exec command="native2ascii -encoding ISO8859_1 flex_resources/erreurs.properties erreurs.properties.ISO8859_1">
        </exec>
        <move file="erreurs.properties.ISO8859_1" tofile="flex_resources/erreurs.properties" overwrite="true" />

        <exec command="native2ascii -encoding ISO8859_1 flex_resources/veillesociale.properties veillesociale.properties.ISO8859_1">
        </exec>
        <move file="veillesociale.properties.ISO8859_1" tofile="flex_resources/veillesociale.properties" overwrite="true" />

        <exec command="native2ascii -encoding ISO8859_1 flex_resources/rup.properties rup.properties.ISO8859_1">
        </exec>
        <move file="rup.properties.ISO8859_1" tofile="flex_resources/rup.properties" overwrite="true" />

        <exec command="native2ascii -encoding ISO8859_1 flex_resources/administration.properties administration.properties.ISO8859_1">
        </exec>
        <move file="administration.properties.ISO8859_1" tofile="flex_resources/administration.properties" overwrite="true" />
    </target>
</project>

My flex-config.xml

<?xml version="1.0"?>

<!--

    ADOBE SYSTEMS INCORPORATED
    Copyright 2005-2007 Adobe Systems Incorporated
    All Rights Reserved.

    NOTICE: Adobe permits you to use, modify, and distribute this file
    in accordance with the terms of the license agreement accompanying it.

-->

<flex-config>

   <compiler>

      <!-- Turn on generation of accessible SWFs. -->
      <accessible>false</accessible>

      <!-- Specifies the locales for internationalization. -->
      <locale>
          <locale-element>en_US</locale-element>
      </locale>

      <!-- List of path elements that form the roots of ActionScript class hierarchies. -->
      <!-- not set -->
      <!--
      <source-path>
         <path-element>string</path-element>
      </source-path>
      -->

     <!-- Allow the source-path to have path-elements which contain other path-elements -->
     <allow-source-path-overlap>false</allow-source-path-overlap>

      <!-- Run the AS3 compiler in a mode that detects legal but potentially incorrect -->
      <!-- code.                                                                       -->
      <show-actionscript-warnings>true</show-actionscript-warnings>

      <!-- Turn on generation of debuggable SWFs. False by default for mxmlc, -->
      <!-- but true by default for compc. -->
      <!--
      <debug>true</debug>
      -->

      <!-- List of SWC files or directories to compile against but to omit from -->
      <!-- linking.                                                             -->
      <external-library-path>
         <path-element>libs/player/playerglobal.swc</path-element>
      </external-library-path>

      <!-- Turn on writing of generated/*.as files to disk. These files are generated by -->
      <!-- the compiler during mxml translation and are helpful with understanding and   -->
      <!-- debugging Flex applications.                                                  -->
      <keep-generated-actionscript>false</keep-generated-actionscript>

      <!-- not set -->
      <!--
      <include-libraries>
         <library>string</library>
      </include-libraries>
      -->

      <!-- List of SWC files or directories that contain SWC files. -->
      <library-path>
         <path-element>libs</path-element>
         <path-element>libs/player</path-element>
         <path-element>locale/{locale}</path-element>
      </library-path>

      <namespaces>
      <!-- Specify a URI to associate with a manifest of components for use as MXML -->
      <!-- elements.                                                                -->
         <namespace>
            <uri>http://www.adobe.com/2006/mxml</uri>
            <manifest>mxml-manifest.xml</manifest>
         </namespace>
      </namespaces>

      <!-- Enable post-link SWF optimization. -->
      <optimize>true</optimize>

      <!-- Keep the following AS3 metadata in the bytecodes.                                             -->
      <!-- Warning: For the data binding feature in the Flex framework to work properly,                 -->
      <!--          the following metadata must be kept:                                                 -->
      <!--          1. Bindable                                                                          -->
      <!--          2. Managed                                                                           -->
      <!--          3. ChangeEvent                                                                       -->
      <!--          4. NonCommittingChangeEvent                                                          -->
      <!--          5. Transient                                                                         -->
      <!--
      <keep-as3-metadata>
          <name>Bindable</name>
          <name>Managed</name>
          <name>ChangeEvent</name>
          <name>NonCommittingChangeEvent</name>
          <name>Transient</name>
      </keep-as3-metadata>
      -->

      <!-- Turn on reporting of data binding warnings. For example: Warning: Data binding -->
      <!-- will not be able to detect assignments to "foo".                               -->
      <show-binding-warnings>true</show-binding-warnings>

      <!-- toggle whether warnings generated from unused type selectors are displayed -->
      <show-unused-type-selector-warnings>true</show-unused-type-selector-warnings>

      <!-- Run the AS3 compiler in strict error checking mode. -->
      <strict>true</strict>

      <!-- Use the ActionScript 3 class based object model for greater performance and better error reporting. -->
      <!-- In the class based object model most built-in functions are implemented as fixed methods of classes -->
      <!-- (-strict is recommended, but not required, for earlier errors) -->
      <as3>true</as3>

      <!-- Use the ECMAScript edition 3 prototype based object model to allow dynamic overriding of prototype -->
      <!-- properties. In the prototype based object model built-in functions are implemented as dynamic      -->
      <!-- properties of prototype objects (-strict is allowed, but may result in compiler errors for         -->
      <!-- references to dynamic properties) -->
      <es>false</es>

      <!-- List of CSS or SWC files to apply as a theme. -->
      <!-- not set -->
      <!--
      <theme>
         <filename>string</filename>
         <filename>string</filename>
      </theme>
      -->

      <!-- Turns on the display of stack traces for uncaught runtime errors. -->
      <verbose-stacktraces>false</verbose-stacktraces>

      <!-- Defines the AS3 file encoding. -->
      <!-- not set -->
      <!--
      <actionscript-file-encoding></actionscript-file-encoding>
      -->

      <fonts>

          <!-- Enables advanced anti-aliasing for embedded fonts, which provides greater clarity for small -->
          <!-- fonts. This setting can be overriden in CSS for specific fonts. -->
          <!-- NOTE: flash-type has been deprecated. Please use advanced-anti-aliasing <flash-type>true</flash-type> -->
          <advanced-anti-aliasing>true</advanced-anti-aliasing>

          <!-- The number of embedded font faces that are cached. -->
          <max-cached-fonts>20</max-cached-fonts>

          <!-- The number of character glyph outlines to cache for each font face. -->
          <max-glyphs-per-face>1000</max-glyphs-per-face>

          <!-- Defines ranges that can be used across multiple font-face declarations. -->
          <!-- See flash-unicode-table.xml for more examples. -->
          <!-- not set -->
          <!--
          <languages>
              <language-range>
                  <lang>englishRange</lang>
                  <range>U+0020-U+007E</range>
              </language-range>
          </languages>
          -->

          <!-- Compiler font manager classes, in policy resolution order-->
          <managers>
              <manager-class>flash.fonts.JREFontManager</manager-class>
              <manager-class>flash.fonts.AFEFontManager</manager-class>
              <manager-class>flash.fonts.BatikFontManager</manager-class>
          </managers>

          <!-- File containing cached system font licensing information produced via
               java -cp mxmlc.jar flex2.tools.FontSnapshot (fontpath)
               Will default to winFonts.ser on Windows XP and
               macFonts.ser on Mac OS X, so is commented out by default.

          <local-fonts-snapshot>localFonts.ser</local-fonts-snapshot>
          -->

      </fonts>

      <!-- Array.toString() format has changed. -->
      <warn-array-tostring-changes>false</warn-array-tostring-changes>

      <!-- Assignment within conditional. -->
      <warn-assignment-within-conditional>true</warn-assignment-within-conditional>

      <!-- Possibly invalid Array cast operation. -->
      <warn-bad-array-cast>true</warn-bad-array-cast>

      <!-- Non-Boolean value used where a Boolean value was expected. -->
      <warn-bad-bool-assignment>true</warn-bad-bool-assignment>

      <!-- Invalid Date cast operation. -->
      <warn-bad-date-cast>true</warn-bad-date-cast>

      <!-- Unknown method. -->
      <warn-bad-es3-type-method>true</warn-bad-es3-type-method>

      <!-- Unknown property. -->
      <warn-bad-es3-type-prop>true</warn-bad-es3-type-prop>

      <!-- Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN. -->
      <warn-bad-nan-comparison>true</warn-bad-nan-comparison>

      <!-- Impossible assignment to null. -->
      <warn-bad-null-assignment>true</warn-bad-null-assignment>

      <!-- Illogical comparison with null. -->
      <warn-bad-null-comparison>true</warn-bad-null-comparison>

      <!-- Illogical comparison with undefined. Only untyped variables (or variables of type *) can be undefined. -->
      <warn-bad-undefined-comparison>true</warn-bad-undefined-comparison>

      <!-- Boolean() with no arguments returns false in ActionScript 3.0. Boolean() returned undefined in ActionScript 2.0. -->
      <warn-boolean-constructor-with-no-args>false</warn-boolean-constructor-with-no-args>

      <!-- __resolve is no longer supported. -->
      <warn-changes-in-resolve>false</warn-changes-in-resolve>

      <!-- Class is sealed. It cannot have members added to it dynamically. -->
      <warn-class-is-sealed>true</warn-class-is-sealed>

      <!-- Constant not initialized. -->
      <warn-const-not-initialized>true</warn-const-not-initialized>

      <!-- Function used in new expression returns a value. Result will be what the -->
      <!-- function returns, rather than a new instance of that function.           -->
      <warn-constructor-returns-value>false</warn-constructor-returns-value>

      <!-- EventHandler was not added as a listener. -->
      <warn-deprecated-event-handler-error>false</warn-deprecated-event-handler-error>

      <!-- Unsupported ActionScript 2.0 function. -->
      <warn-deprecated-function-error>true</warn-deprecated-function-error>

      <!-- Unsupported ActionScript 2.0 property. -->
      <warn-deprecated-property-error>true</warn-deprecated-property-error>

      <!-- More than one argument by the same name. -->
      <warn-duplicate-argument-names>true</warn-duplicate-argument-names>

      <!-- Duplicate variable definition -->
      <warn-duplicate-variable-def>true</warn-duplicate-variable-def>

      <!-- ActionScript 3.0 iterates over an object's properties within a "for x in target" statement in random order. -->
      <warn-for-var-in-changes>false</warn-for-var-in-changes>

      <!-- Importing a package by the same name as the current class will hide that class identifier in this scope. -->
      <warn-import-hides-class>true</warn-import-hides-class>

      <!-- Use of the instanceof operator. -->
      <warn-instance-of-changes>true</warn-instance-of-changes>

      <!-- Internal error in compiler. -->
      <warn-internal-error>true</warn-internal-error>

      <!-- _level is no longer supported. For more information, see the flash.display package. -->
      <warn-level-not-supported>true</warn-level-not-supported>

      <!-- Missing namespace declaration (e.g. variable is not defined to be public, private, etc.). -->
      <warn-missing-namespace-decl>true</warn-missing-namespace-decl>

      <!-- Negative value will become a large positive value when assigned to a uint data type. -->
      <warn-negative-uint-literal>true</warn-negative-uint-literal>

      <!-- Missing constructor. -->
      <warn-no-constructor>false</warn-no-constructor>

      <!-- The super() statement was not called within the constructor. -->
      <warn-no-explicit-super-call-in-constructor>false</warn-no-explicit-super-call-in-constructor>

      <!-- Missing type declaration. -->
      <warn-no-type-decl>true</warn-no-type-decl>

      <!-- In ActionScript 3.0, white space is ignored and '' returns 0. Number() returns -->
      <!-- NaN in ActionScript 2.0 when the parameter is '' or contains white space.      -->
      <warn-number-from-string-changes>false</warn-number-from-string-changes>

      <!-- Change in scoping for the this keyword. Class methods extracted from an  -->
      <!-- instance of a class will always resolve this back to that instance. In   -->
      <!-- ActionScript 2.0 this is looked up dynamically based on where the method -->
      <!-- is invoked from.                                                         -->
      <warn-scoping-change-in-this>false</warn-scoping-change-in-this>

      <!-- Inefficient use of += on a TextField.-->
      <warn-slow-text-field-addition>true</warn-slow-text-field-addition>

      <!-- Possible missing parentheses. -->
      <warn-unlikely-function-value>true</warn-unlikely-function-value>

      <!-- Possible usage of the ActionScript 2.0 XML class. -->
      <warn-xml-class-has-changed>false</warn-xml-class-has-changed>

   </compiler>

   <!-- compute-digest: writes a digest to the catalog.xml of a library. Use this when the library will be used as a
                        cross-domain rsl.-->
   <!-- compute-digest usage:
   <compute-digest>boolean</compute-digest>
   -->

   <!-- A list of runtime shared library URLs to be loaded before applications start. -->
   <!-- not set -->
   <!--
   <runtime-shared-libraries>
      <url>string</url>
      <url>string</url>
   </runtime-shared-libraries>
   -->

   <!-- runtime-shared-library-path: specifies a SWC or directory to link against and an RSL URL to load with optional failover URLs -->
   <runtime-shared-library-path>
      <path-element>libs/framework.swc</path-element>
      <rsl-url>framework_3.0.0.477.swz</rsl-url>
      <policy-file-url></policy-file-url>
      <rsl-url>framework_3.0.0.477.swf</rsl-url>
      <policy-file-url></policy-file-url>
   </runtime-shared-library-path>
   <!-- static-link-runtime-shared-libraries: statically link the libraries specified by the -runtime-shared-libraries-path option.-->
   <static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>

   <!-- target-player: specifies the version of the player the application is targeting.
                       Features requiring a later version will not be compiled into the application.
                       The minimum value supported is "9.0.0".-->
   <!-- target-player usage:
   <target-player>version</target-player>
   -->

   <!-- Enables SWFs to access the network. -->
   <use-network>true</use-network>

   <!-- Metadata added to SWFs via the SWF Metadata tag. -->
   <metadata>
      <title>Adobe Flex 3 Application</title>
      <description>http://www.adobe.com/products/flex</description>
      <publisher>unknown</publisher>
      <creator>unknown</creator>
      <language>EN</language>
   </metadata>

   <!-- licenses: specifies a list of product and serial number pairs. -->
   <!-- not set -->
   
   <licenses>
      <license>
         <product>flexbuilder3</product>
         <serial-number>XXXXXXXXXXXXXXXXX</serial-number>
      </license>
   </licenses>
  

</flex-config>
Was it helpful?

Solution

I think the "flexClient_381495.cache (No such >file or directory)" message is innocuous. That's just standard output from ant or the ant task, right? I think I've seen messages like this a million times, but it's been a while since I used ant...

You mentioned that it hangs after printing that output, but sometimes you also see compiler warnings. I'm guessing it is entering the compile phase every time. Sometimes you get far enough into compiling to see some warning messages.

This sounds like you might want to specify a bigger heap size for the JVM. Some details on doing that here and here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top