最近,我突然开始从Flex库中抛出当前异常。我正在处理的文件(Login.mxml)在加载时突然开始抛出此异常。
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at mx.binding::StaticPropertyWatcher/updateParent()[E:\dev\4.x\frameworks\projects\framework\src\mx\binding\StaticPropertyWatcher.as:150]
at _components_LoginWatcherSetupUtil/setup()
at components::Login()[C:\Users\username\Documents\MP_MAIN\src\components\Login.mxml:0]
<snip ...>
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:700]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]
在调试器中运行它并没有给我一行错误的代码,但它确实给了我一行StaticPropertyWatcher。具体做法是:
override public function updateParent(parent:Object):void
{
// The assumption is that parent is of type, Class, and that
// the class has a static variable or property,
// staticEventDispatcher, of type IEventDispatcher.
parentObj = Class(parent);
if (parentObj["staticEventDispatcher"] != null) /* Exception thrown from here */
{
...
调试器显示parentObj
确实为空,解释了异常的直接原因,但我似乎无法确定更深层次的原因(即我做错了什么)。正在从_components_LoginWatcherSetupUtil
类调用updateParent方法,但是调试器说没有代码,所以我写的内容和导致异常的内容之间的关键缺失就丢失了。
所以,基本上,我甚至无法调试这个。有什么想法可以解决出了什么问题?
答案 0 :(得分:0)
您的错误报告为Login.mxml:0
当我将第0行视为错误时,它告诉我存在某种语法错误。可能打开字符串?
我建议查看该文件,看看它是否设置正确。
发布完整的Login.mxml文件,让我们看一下。
答案 1 :(得分:0)
在费力地将我自上次提交到我的存储库后所做的每一项更改添加回来之后,我找到了这个问题的罪魁祸首。基本上,有几个静态变量用于跟踪服务器地址,如下所示:
public static var MAIN:String = "http://192.168.1.1/";
public static var MANAGE:String = MAIN + "Manage/";
问题是我使用了非编译时常量MAIN
来初始化MANAGE
。将这些变量更改为const
可以解决问题。
public static const MAIN:String = "http://192.168.1.1/";
public static const MANAGE:String = MAIN + "Manage/";
希望这可以帮助其他任何人遇到这个问题