Eclipse - Blackberry SDK - 在设备上调试:“详细信息不可用 - VM不支持”

时间:2011-03-14 18:15:36

标签: eclipse json debugging blackberry

我在真实设备(BB Bold 9700)上调试我的Blackberry应用程序时遇到了一个奇怪的问题。当我在BB模拟器中调试相同的应用程序时,应用程序运行正常,但是当我在真实设备上运行它时,应用程序表现不同(自定义绘画完全错误)。更糟糕的是,我的Eclipse环境似乎无法在处于断点(调试时间)时正确查看实时对象。

我添加了一个屏幕截图来说明这种奇怪的行为: enter image description here

如您所见,应用程序在IF语句中的断点处停止,但“变量”窗格显示变量“methodName”等于null。此外,当我想查看类型为 org.json.me.JSONArray 的变量“methodArguments”时,它说“ 详细信息不可用 - VM不支持 ”。

有谁知道这里发生了什么?我的应用程序在模拟器上运行良好,但它在真实设备上目前无用。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我想我修好了它:

问题是我在一个尚未添加到视图堆栈的管理器上布置了字段。

对我来说,诀窍是覆盖了包含显示错误的字段的管理器中的onDisplay():

protected void onDisplay()
{
    //Make sure superclass is called
    super.onDisplay();

    /*You have to call "this.setDirty(true)" when you perform layout on a
     *manager that isn't added to the viewstack. Then you can use
     *"this.isDirty()" to determine whether you need to re-layout the fields
     *when the manager becomes visible.*/       
    if(this.isDirty())
    {
        //I'm not sure if I need to use "invokeAndWait" and not "invokeLater"
        UiApplication.getUiApplication().invokeAndWait(new Runnable()
        {
            public void run()
            {
                for (int i = 0; i < getFieldCount(); i++)
                {
                    /*This (custom) function makes sure the Field gets its
                     *size and position*/
                    layoutItem(getField(i));
                }
            }
        });
        //Make sure you set "dirty" to false, to make sure this only happens once
        this.setDirty(false);
    }
}

如果有人有更好的解决方案,我会很高兴听到它(并且可能会改进我的应用)。

答案 1 :(得分:0)

org.json.me.JSONArray ,它说“详细信息不可用 - VM不支持”。

在运行4.5和4.6 BB OS的设备上无法使用与JSON相关的内容。将其导入代码中。

从这里下载。
https://github.com/douglascrockford/JSON-java

它可以作为开源使用,然后将其用于您的应用程序。