Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 强制失败,因为从BlazeDS收到的集合中充满了;“对象”;而不是真的_Java_Apache Flex_Flex4_Blazeds - Fatal编程技术网

Java 强制失败,因为从BlazeDS收到的集合中充满了;“对象”;而不是真的

Java 强制失败,因为从BlazeDS收到的集合中充满了;“对象”;而不是真的,java,apache-flex,flex4,blazeds,Java,Apache Flex,Flex4,Blazeds,我在一个复杂的项目中使用flex 4.5.1、JDK 1.6、BlazeDS v4.0.1(21287):Cairngorm大部分时间都在使用,但Swiz也在导入的swc中使用。 在很多情况下,我能够对java进行远程调用,但现在不行 当我迭代从java服务器(RemoteCall)接收的集合时,我的flex代码中出现错误: Java函数是 ListgetFundGenders() 我的错误是: TypeError:Error#1034:类型强制失败:无法转换Object@a245779至com

我在一个复杂的项目中使用flex 4.5.1、JDK 1.6、BlazeDS v4.0.1(21287):Cairngorm大部分时间都在使用,但Swiz也在导入的swc中使用。 在很多情况下,我能够对java进行远程调用,但现在不行

当我迭代从java服务器(RemoteCall)接收的集合时,我的flex代码中出现错误:

Java函数是
ListgetFundGenders()

我的错误是:
TypeError:Error#1034:类型强制失败:无法转换Object@a245779至com.xxx.apps.fnr.vo.fund.FundGenderVO

在debug中,我看到我将包含特定子值的对象的ArrayCollection呈现给FundGenderVO/FundGenderTo

动作脚本出现的代码:
对于每个(变量性别:列表中的FundGenderVO){//do something}

我的FundGenderVO.as是:

package com.xxx.apps.fnr.vo.fund
{  
    import mx.collections.ArrayCollection;
    [RemoteClass(alias="com.xxx.apps.fnr.service.dto.FundGenderDto")]   
    [Bindable]  
    public class FundGenderVO extends AbstractVO {  
            public var id:int;  
            public var type:String;  
            public var fundTypes: ArrayCollection = new ArrayCollection();  

            public function FundGenderVO(){  
                    super();  
            }  
}  
}

我已激活BlazeDS完整跟踪,以查看我是否收到了相应的:com.xxx.apps.fnr.service.dto.fundGenderTo。
所以和我的“RemoteClass”一样

[BlazeDS]结果:'java.util.ArrayList(集合大小:2) [0]=com.xxx.apps.fnr.service.dto。FundGenderDto@99f98a[type=Long Only,fundTypes=[com.xxx.apps.fnr.service.dto。FundTypeDto@60540d[type=Umbrella,investable=false,id=100],com.xxx.apps.fnr.service.dto。FundTypeDto@2e2f02[类型=子基金,可投资=假,id=300]],id=0] //第二个对象。。。 我试着检查我是否犯了一个愚蠢的错误

有没有办法更好地诊断发生了什么事?

我可能做错了什么或做了什么傻事?

我见过这样的行为,对象返回时没有类型,原因有两个。1 RemoteClass元数据丢失或错误,2 AS3 DTO未从任何地方的源引用,因此字节码未编译到应用程序中。由于在循环中使用类型化迭代器,因此必须在生成的swf中包含类的字节码。这给我留下了一个1,肯定是别名出了问题。也许可以尝试一个简单的别名/类/包结构,看看这是否有任何影响,您最近是否更改了任何一方的接口impls您是绝对正确的元数据缺失:远程类由一个注入了Swiz的服务使用。通过在服务外部添加registerClassAlias,我能够让编译器看到这些类是必需的。flash.net.getClassByAlias告诉我引用是未知的。请看:flash.net.registerClassAlias尽快解决了这个问题。我们很高兴您能够解决这个问题,这是我见过的唯一失败的案例,而且它是一致的,所以至少通常很容易修复。我本来会把它作为一个答案,但我不知道到底出了什么问题,你可以用你的评论来回答你自己的问题。 [BlazeDS]Result: 'java.util.ArrayList (Collection size:2) [0] = com.xxx.apps.fnr.service.dto.FundGenderDto@99f98a[type=Long Only,fundTypes=[com.xxx.apps.fnr.service.dto.FundTypeDto@60540d[type=Umbrella,investable=false,id=100], com.xxx.apps.fnr.service.dto.FundTypeDto@2e2f02[type=Sub-Fund,investable=false,id=300]],id=0] // second object ...