2010-04-08 140 views
3

我更新了從flex 3.5到flex 4.0的flex應用程序。 我們使用ant編譯我們的項目,我們有一個mxmlc任務來處理flex部分。 升級後,我們的mxmlc任務中斷。Ant和Flex-4問題,未找到MXMLC.jar!

下面是任務定義:

<taskdef resource="flexTasks.tasks"> 
     <classpath> 
      <pathelement path="${FLEX_HOME}/ant/lib/flexTasks.jar"/> 
      <fileset dir="${FLEX_HOME}/lib"> 
       <include name="**/*.jar"/> 
      </fileset> 
     </classpath> </taskdef> 

這裏是mxmlc的任務

<mxmlc file="${src}/Main.mxml" output="${build}/main.swf" debug="true" 
target-player="10" services="../src/main/webapp/WEB-INF/flex/services-config.xml" 
context-root="/" > 
      <compiler.library-path dir="${lib}"> 
       <include name="*.swc"/> 
      </compiler.library-path> 
      <compiler.library-path dir="${FLEX_HOME}/frameworks/libs"> 
       <include name="*.swc"/> 
      </compiler.library-path> 

      <compiler.library-path dir="${FLEX_HOME}/frameworks/libs/player/10.0"> 
       <include name="*.swc"/> 
      </compiler.library-path> 

      <compiler.library-path dir="${FLEX_HOME}/frameworks/locale"> 
       <include name="**/*"/> 
      </compiler.library-path> 
     </mxmlc> 

而且我們得到:

The class not found in jar file: mxmlc.jar 

我檢查了$ {FLEX_HOME}/lib目錄文件夾,我可以在那裏看到mxmlc.jar文件。

這裏是螞蟻的詳細輸出:

build.xml:69: The class not found in jar file: mxmlc.jar 
    at flex.ant.FlexTask.resolveClass(FlexTask.java:347) 
    at flex.ant.FlexTask.executeInProcess(FlexTask.java:273) 
    at flex.ant.FlexTask.execute(FlexTask.java:225) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:357) 
    at org.apache.tools.ant.Target.performTasks(Target.java:385) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1306) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1189) 
    at org.apache.tools.ant.Main.runBuild(Main.java:758) 
    at org.apache.tools.ant.Main.startAnt(Main.java:217) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) 

我感謝您的意見解決這個問題,

感謝, -A

+1

具有完全相同的問題,但ant版本已經是1.8,chmod 777所有SDK文件,仍然無法工作,有什麼想法?謝謝! – fei 2010-08-24 06:27:31

回答

0

升級到1.8螞蟻解決了這個問題。

編輯:螞蟻1.8.1有同樣的問題,但它是固定在Ant 1.8.2。

1

我將這個問題追溯到Adobe SDK zip文件,使解壓縮內容的權限不允許我的哈德森用戶讀取內容。一旦我對已安裝的FLEX_HOME中的文件和目錄做了一些chmod,一切正常。

3

朋友,

請複製從{FLEX HOME}最新flexTask.jar文件\螞蟻\ lib目錄並粘貼到螞蟻\ lib中。

Raj。

1

<!-- CHANGE TO YOUR FLEX DIRECTORY //--> 
<property name="FLEX_HOME" value="C:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.0.0"/> 
<property name="APP_ROOT" value="myApp"/> 

<taskdef resource="flexTasks.tasks" > 
    <classpath> <pathelement path="${FLEX_HOME}/ant/lib/flexTasks.jar"/> 
     <pathelement path="${FLEX_HOME}/lib/flexTasks.jar"/> 
     <fileset dir="${FLEX_HOME}/lib"> 
      <include name="**/*.jar"/> 
     </fileset> 
    </classpath> 
</taskdef> 

<target name="main"> 
    <antcall target="en_US"></antcall> 
    <antcall target="ja_JP"></antcall> 
</target> 
<target name="en_US"> 
    <mxmlc> 
     <locale>en_US</locale> 
     <source-path>../locale/{locale}</source-path> 
     <include-resource-bundles>calendarsample</include-resource-bundles> 
     <include-resource-bundles>elixirsamplebar</include-resource-bundles> 
     <include-resource-bundles>p1browzer</include-resource-bundles> 
     <include-resource-bundles>security</include-resource-bundles> 
     <include-resource-bundles>setupBundle</include-resource-bundles> 
     <include-resource-bundles>customerBundle</include-resource-bundles> 
     <include-resource-bundles>orderBundle</include-resource-bundles> 
     <output>../bin-debug/Resources_en_US.swf</output> 
    </mxmlc> 
</target> 
<target name="ja_JP"> 
     <mxmlc keep-generated-actionscript="false"> 
      <locale>ja_JP</locale> 
      <source-path>../locale/{locale}</source-path> 
      <compiler.library-path dir="${FLEX_HOME}/frameworks" append="false"> 
       <include name="libs" /> 
      </compiler.library-path> 
      <include-resource-bundles>calendarsample</include-resource-bundles> 
      <include-resource-bundles>elixirsamplebar</include-resource-bundles> 
      <include-resource-bundles>p1browzer</include-resource-bundles> 
      <include-resource-bundles>security</include-resource-bundles> 
      <include-resource-bundles>setupBundle</include-resource-bundles> 
      <include-resource-bundles>customerBundle</include-resource-bundles> 
      <include-resource-bundles>orderBundle</include-resource-bundles> 
      <output>../bin-debug/Resources_ja_JP.swf</output> 
     </mxmlc> 
    </target> 

+1

向您的代碼添加解釋建議使其更有用。 – Ralgha 2012-12-08 19:31:06

+0

你應該解釋一下你的答案。 – 2012-12-08 19:31:16

1

我是有這個問題了。我發現我的$ ANT_HOME/lib目錄中有一箇舊的flexTasks.jar。當我刪除這個文件時,問題中的ANT配置爲我工作。

0

我有同樣的問題,這是因爲運行Ant的用戶沒有對Flex sdk目錄的讀取權限。