这里汇集Leeo在学习Flex开发中遇到的各种异常处理,以便日后查询之用,也希望为遇到相同问题的Flex开发者们提供解决问题的帮助(PS:Leeo刚刚开始接触Flex)。
1:unable to open ‘C:\Program Files\Adobe\Adobe Flash Builder Beta 2\sdks\3.4.1\frameworks\locale\zh_CN’
1)异常描述:
Leeo在Flash Builder 4中发开Flex 3例子发生如上错误(PS:Flash Builder 4包含了SDK 3.4和SDK4.0两个版本,以上错误是在新建Flex项目选中SDK 3.4的情况下发生的),从错误信息看,似乎跟zh_CN有关,所以Leeo想是不是SDK3.4不支持中文导致的问题,果不其然就是这样。
2)解决方法:
打开项目属性–>Flex编译器–>附加的编译器参数中的“-locale zh_CN”改为“-locale en_US”,刷新一下项目就可以了。
2:[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: 'http://localhost:8080/WebRoot/messagebroker/amf'"]
1)异常描述:
这个错误是Leeo在学习王一松的跟我StepByStep学FLEX教程的跟我StepByStep学FLEX教程——Demo11之HelloJavaFlex时遇到的,Leeo(lichuhui)已经在该文章的页面评论做了回复,原因是:Root URL中包含的Context与Context root中设置的不一致,按照教程作者前一篇文章跟我StepByStep学FLEX教程——Flex+LCDS(BlazeDS)+Java开发中的说法,这里引用一下:
9、这一步修改非常之重要,否则Flex和Java通过LCDS(BlazeDS)就无法正常通信了。
Root URL就是web服务器的根路径。端口可以自己改动。
Context root是LCDS(BlazeDS)工程的名称,因为Flex和Java是一个工程,所以这儿也就是新建的Flex Project工程名称。如果J2EE和Flex是两个项目,那么这个是J2EE项目的名称而不是Flex项目的名称,一定要注意哦。
Flex请求LCDS(BlazeDS)时,需要使用Context root这个参数。
格式:http://{server.name}:{server.port}/{context.root}/messagebroke/amf
所以说这一步的配置非常重要了,特别是context root这一项。
但是Leeo在MyEclipse 7.5的版本中这两项配置是无法修改的,如下图:
2)解决方法:
WebRoot/WEB-INF/flex/services-config.xml中的{context.root}全改成项目名字,如下:
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/HelloFlex/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
<channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
<endpoint url="https://{server.name}:{server.port}/HelloFlex/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
<properties>
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition>
<channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/HelloFlex/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>true</polling-enabled>
<polling-interval-seconds>4</polling-interval-seconds>
</properties>
</channel-definition>
</channels>
3:更新中…