2011-05-13 56 views
0

我嘗試編譯文件到命令行中使用mxmlc的SWF。當它是一個非常簡單的mxml時,編譯成功。但是當文件包含fx名稱空間時,出現如下編譯錯誤:無法解析(或)到組件實現。無法解析<FX:聲明>(或<fx:Script>)的組件實現

我必須要能夠做到這一點,沒有Flash Builder中的幫助,因爲我上一個項目,我需要生成從中我們生成的代碼MXML文件的SWF文件的工作。

有什麼建議嗎?

我試圖編譯的代碼是:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application 
xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
minWidth="800" minHeight="600" width="800" height="600" 
currentState="s1" 
backgroundColor.s1="16777215" backgroundColor.s2="16777215" backgroundColor.s3="16777215" 
creationComplete="application1_creationCompleteHandler(event)"> 
<fx:Script> 
<![CDATA[ 
import mx.events.FlexEvent; 
protected function btnNext_clickHandler(event:MouseEvent):void{currentState= states[++stateIndex].name;} 
protected function btnPrev_clickHandler(event:MouseEvent):void{currentState= states[--stateIndex].name;} 
protected function application1_creationCompleteHandler(event:FlexEvent):void{stateIndex=0;} 
    ]]> 
</fx:Script> 
<s:states> 
<s:State name="s1"/> 
<s:State name="s2"/> 
<s:State name="s3"/> 
</s:states> 
<fx:Declarations> 
<fx:int id="stateIndex"/> 
</fx:Declarations> 
<s:controlBarContent> 
<s:Label text="e-cognitio" id="lblEcognitio" fontSize="10" color="#3C3C3C" fontWeight="bold" fontStyle="italic" paddingTop="4"/> 
<s:Button label="&lt;" height="14" width="27" id="btnPrev" enabled="true" fontSize="10" fontWeight="bold" cornerRadius="5" click="btnPrev_clickHandler(event)" enabled.s1="false"/> 
<s:Button label="&gt;" id="btnNext" enabled="true" fontSize="10" fontWeight="bold" width="27" height="14" cornerRadius="5" click="btnNext_clickHandler(event)" enabled.s3="false"/> 
<s:Label text="blah" id="lblLessonName" fontFamily="Georgia" fontSize="10" paddingTop="3" width="615" textAlign="center"/> 
<s:Button label="X" id="btnExit" fontSize="10" chromeColor="#A11C1C" color="#FFFFFF" fontWeight="bold" width="28" height="14"/> 
</s:controlBarContent> 
<s:Label id= "tmpLbl" text= "A" backgroundColor= "16777215" color= "0" fontSize= "144" x= "144" y= "52" width= "111" height= "135" fontFamily= "Arial" fontWeight= "normal" fontStyle= "normal" textDecoration= "none" includeIn= "s1"/> 
<s:RichEditableText id= "tmpRch" x= "192" y= "216" width= "317" height= "171" editable="false" text= "erjhjhfglkjedbfgkljehfkgjnedfkgjheg 
google" 
includeIn= "s1"> 
<s:TextFlow xmlns="http://ns.adobe.com/textLayout/2008"> 
    <s:p color="#000000" fontFamily="Arial" fontSize="12" kerning="auto" leadingModel="approximateTextField" lineHeight="2" textAlign="left" trackingRight="0"> 
    <s:span>erjhjhfglkjedbfgkljehfkgjnedfkgjheg</s:span> 
    </s:p> 
    <s:p color="#000000" fontFamily="Arial" fontSize="12" kerning="auto" leadingModel="approximateTextField" lineHeight="2" textAlign="left" trackingRight="0"> 
    <s:a href="http://www.google.com" target="_blank"> 
     <s:span>google</s:span> 
    </s:a> 
    </s:p> 
</s:TextFlow> 
</s:RichEditableText> 
<mx:Image id= "tmpImg" x= "122.2" y= "143.35" width= "468" height= "175.6" source= "http://www.google.com.tr/logos/classicplus.png" 
includeIn= "s2"/> 
</s:Application> 

回答

3

最後,我找到了解決辦法。

首先,我的理解這個問題是特定於某些地區。問題是定義here

看來這個問題是土耳其語言環境中很常見(電腦,其中一個OS是土耳其)

這是我如何解決了這個問題:迫使該mxmlc的使用運用英語的java虛擬機語言環境。我發現我的SDK使用的JVM的jvm.config並添加了行-Duser.language=en -Duser.location=us。現在它工作了!

我希望這個解決方案適用於每個人誰具有相同的問題。

Regards

1

嘗試執行以下操作:

mxmlc -version 

調用mxmlc相同的方式,你在命令行編譯。輸出什麼版本號?它應該至少4.0。

+0

對不起,我忘了提及我的Flex SDK版本是4.0.0。任何想法爲什麼會拋出這樣的錯誤? – 2011-05-13 17:43:10

+0

你使用絕對路徑給你'mxmlc'還是使用環境路徑設置運行?是否有可能你認爲你使用4.0,但實際上它是3.x?您是否嘗試使用'-version'參數調用以確保? – Constantiner 2011-05-13 17:46:26

+0

我使用以下絕對路徑:C:\ Program Files \ Adob​​e \ Adob​​e Flash Builder 4 \ sdks \ 4.0.0 \ bin。我也援引 - 版本來確保。該版本是4.0.0。 – 2011-05-13 17:56:10