Apache flex Flex(Flash Builder 4)编译的debug=false会导致在debug=true时不会发生的错误

Apache flex Flex(Flash Builder 4)编译的debug=false会导致在debug=true时不会发生的错误,apache-flex,compiler-construction,flex4,debugging,parsley,Apache Flex,Compiler Construction,Flex4,Debugging,Parsley,我们有一个相当大的Flex应用程序,我们的QA出现了Flex开发人员无法重现的随机但可重复的错误。其中一些错误是从flash player调试版本引发的,例如: ReferenceError: Specified ApplicationDomain does not contain the class ::LineSeriesLegendMarker at org.spicefactory.lib.reflect::ClassInfo$/getClassDefinitionByName(

我们有一个相当大的Flex应用程序,我们的QA出现了Flex开发人员无法重现的随机但可重复的错误。其中一些错误是从flash player调试版本引发的,例如:

ReferenceError: Specified ApplicationDomain does not contain the class ::LineSeriesLegendMarker
    at org.spicefactory.lib.reflect::ClassInfo$/getClassDefinitionByName()
    at org.spicefactory.lib.reflect::ClassInfo$/getClassInfo()
    at org.spicefactory.lib.reflect::ClassInfo$/forInstance()
    at org.spicefactory.parsley.core.view.impl::DefaultViewConfigurator/getDefinitionByType()
    at org.spicefactory.parsley.core.view.impl::DefaultViewConfigurator/getDefinition()
    at org.spicefactory.parsley.core.view.handler::ViewAutowireHandler/processAutowireEvent()
    at org.spicefactory.parsley.core.view.util::ContextAwareEventHandler/handleEvent()
    at org.spicefactory.parsley.core.view.handler::ViewAutowireHandler/handleAutowireEvent()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at org.spicefactory.parsley.core.view.handler::ViewAutowireHandler/prefilterView()
    at flash.display::DisplayObjectContainer/addChildAt()
    at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::$addChildAt()
    at mx.core::Container/addChildAt()
    at mx.core::Container/addChild()
    at mx.charts::Legend/addLegendItem()
    at mx.charts::Legend/populateFromArray()
    at mx.charts::Legend/commitProperties()
    at mx.core::UIComponent/validateProperties()
    at mx.managers::LayoutManager/validateProperties()
    at mx.managers::LayoutManager/doPhasedInstantiation()
    at mx.managers::LayoutManager/doPhasedInstantiationCallback()
其他错误包括组合框没有正确填充,以及似乎只是一般的计时问题


我想强调的是,我们已经将范围缩小到了主SWF,除了mxmlc参数-debug=true vs-debug=false之外,没有其他变量。有没有其他人遇到过这种情况,或者知道为什么构建会导致不同的行为?

您需要显示更多的代码;主要是你的欧芹

debug=true和debug=false之间的区别在于debug=true不会跟踪最终产品中的错误。开发人员应始终使用debug=true运行,并安装Flash Player debug


另外,我很好奇为什么欧芹需要了解视图组件。您正在使用配置标记吗?我建议您不要使用它,而是将FastInject与适当的演示器模型一起使用,这对可测试性更好。配置意味着欧芹必须反映视图中的所有属性,这既无用又耗时。我保证如果您使用FastInject而不是配置,您的问题将消失。除非您试图将视图注入组件,否则不应该这样做。如果是这样的话,您需要以更好的方式构建应用程序。

您需要显示更多的代码;主要是你的欧芹

debug=true和debug=false之间的区别在于debug=true不会跟踪最终产品中的错误。开发人员应始终使用debug=true运行,并安装Flash Player debug


另外,我很好奇为什么欧芹需要了解视图组件。您正在使用配置标记吗?我建议您不要使用它,而是将FastInject与适当的演示器模型一起使用,这对可测试性更好。配置意味着欧芹必须反映视图中的所有属性,这既无用又耗时。我保证如果您使用FastInject而不是配置,您的问题将消失。除非您试图将视图注入组件,否则不应该这样做。如果是这种情况,您需要以更好的方式构建应用程序。

您是否有机会使用
SWFLoader
?我们在此应用程序中使用了ModuleLoader。您是否有机会使用
SWFLoader
?我们在此应用程序中使用了ModuleLoader。感谢您的帮助。自动布线似乎是主要问题。通过摆脱自动布线并使用Configure和FastInject(取决于我们是否使用了欧芹的消息传递功能),问题似乎消失了。我仍然很好奇,为什么我们只在调试编译器标志为false时才看到这个错误。我无法在没有看到更多代码的情况下进行评论,但我偷偷怀疑您没有正确使用欧芹。这肯定是事实。这不是一个真正的问题,因为我们不再使用自动布线,但对于好奇的人,我能够在一个非常小的项目中使用Adobe示例提供的面积图和包含视图(该视图是图表的父视图)的上下文来重现这一点。如果在导入后运行它,您将看到它抛出错误。编辑编译器标志并将debug设置为true将隐藏错误。到目前为止,我最好的猜测是调试模式不像非调试编译的SWF那样支持作用域。@vershun,Parsley不是用来注入(和反射)视图组件的。这就是欧芹存在的全部原因,是为了将视野从商业中分离出来。如果您的配置中有一个视图,则应将其删除。我认为您的问题在于时间,因为调试模式初始化“较慢”。谢谢您的帮助。自动布线似乎是主要问题。通过摆脱自动布线并使用Configure和FastInject(取决于我们是否使用了欧芹的消息传递功能),问题似乎消失了。我仍然很好奇,为什么我们只在调试编译器标志为false时才看到这个错误。我无法在没有看到更多代码的情况下进行评论,但我偷偷怀疑您没有正确使用欧芹。这肯定是事实。这不是一个真正的问题,因为我们不再使用自动布线,但对于好奇的人,我能够在一个非常小的项目中使用Adobe示例提供的面积图和包含视图(该视图是图表的父视图)的上下文来重现这一点。如果在导入后运行它,您将看到它抛出错误。编辑编译器标志并将debug设置为true将隐藏错误。到目前为止,我最好的猜测是调试模式不像非调试编译的SWF那样支持作用域。@vershun,Parsley不是用来注入(和反射)视图组件的。这就是欧芹存在的全部原因,是为了将视野从商业中分离出来。如果您的配置中有一个视图,则应将其删除。我认为您的问题在于时间,因为调试模式初始化“较慢”。