【问题标题】:Flex: errors in generated *WatcherSetupUtil?Flex:生成的 *WatcherSetupUtil 中的错误?
【发布时间】:2011-06-21 00:06:26
【问题描述】:

如果在我运行 Flex 3.5 构建时行星未正确对齐,则生成的 .swf 会立即从 _MyAppWatercherSetupUtil 抛出空对象错误:

TypeError:错误 #1009:无法访问空对象引用的属性或方法。 在 _MyAppWatcherSetupUtil/setup() 在 MyApp/initialize()[/Users/wolever/my_app/MyApp.mxml:0] 在 mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\经理\SystemManager.as:2131] 在 mx.managers::SystemManager/initializeTopLevelWindow()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:3400] 在 mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\经理\SystemManager.as:3223] 在 mx.managers::SystemManager/docFrameListener()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:3069]

对此我有什么办法吗?

我尝试过调试它,但似乎 Flex 框架竭尽全力确保无法调试生成的代码……

【问题讨论】:

  • 有机会了解您的装订方式吗?看起来你的绑定表达式有一些在评估时没有创建的东西。
  • 这是应用程序的主 MXML 文件,因此正在进行一堆绑定。您所说的“绑定表达式具有在评估时未创建的内容”是什么意思? (有可能,我只是不确定我是否理解)
  • @David 我对代码进行了一些研究,以查看该错误可能发生的情况,但没有什么明显的问题出现在我身上,您可以将开源代码链接到您的 swc,然后在其中放置断点(在eclipse中按ctrl+alt+t根据类名打开)然后看看那一行到底出了什么问题,有问题的行是2131:IUIComponent(child).initialize(); // 调用 child.createChildren() 所以如果那个时候的孩子是 null 或者不是 IUIComponent 我可以理解错误,为什么会发生是一个谜。
  • @David 你也试过其他版本的SDK,结果有什么变化吗?另外,您是否依赖于针对不同版本的 SDK 编译的其他 swcs 或任何类似的内容(尽管这与我们在混合 3.2 和 3.4 时收到的错误不同,但由于奇怪的 mojo,我们确实遇到了由此引起的问题Flex 用于从依赖项中解析类)。
  • @shaunhusain 我已经尝试使用调试器单步执行,但收效甚微。打破IUIComponent(child).initialize(),一切看起来都合乎情理(childMyApp,IIRC 的一个实例),但是由于没有可用于生成代码的调试信息,因此进一步跟踪执行变得困难。

标签: apache-flex flex3


【解决方案1】:

我刚刚将旧的 Flex 3 应用程序升级到 Flex 4.6 并且遇到了同样的问题。对我有用的是一个干净的项目。到目前为止一切顺利。

--基思

【讨论】:

  • Project clean 也对我有用。重命名命名空间后我遇到了问题。
【解决方案2】:

我今天遇到了 WatcherSetupUil/setup() 类型错误:错误 #1009:无法访问空对象引用的属性或方法。

对我来说,它看起来与数据绑定有很强的联系。对我来说,如果您不注意 Flex 要求的规则,就会发生这种情况。我在网上找到了我在这里上传的资源:“Flex 数据绑定陷阱:10 种常见的误用和错误”。更改后 - 在我的情况下,尤其是错误 6 - 使用错误的可绑定事件名称 - 将 WatcherSetupUtil 拿走了。

也许这对你也有帮助:-)。 http://www.adobe.com/devnet/flex/articles/databinding_pitfalls.html

【讨论】:

    【解决方案3】:

    只是一个想法-您是否尝试设置编译器标志-keep?像这样你可以看看你的班级是什么样子的。

    【讨论】:

    • 正如我在 Jabby 的回答中提到的那样,MyAppWatcherSetupUtil 类是 600 行生成的代码……与任何其他 WatcherSetupUtil 几乎相同。
    【解决方案4】:

    看看为您的 MyAppWatcherSetupUtil 类的“设置”方法生成的代码会很有趣

    【讨论】:

    • 我试过了……它看起来像 600 行生成的观察程序设置代码(即,据我所知,与所有其他 WatcherSetupUtil 相同)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2014-09-18
    • 2019-01-13
    相关资源
    最近更新 更多