我是这里新来的。
当我使用MATLAB时,经常会遇到java错误。我使用的是英特尔Mac,而MATLAB的版本是R2012a。
错误显示在MATLAB命令窗口中,如下所示:
java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1971)
at java.awt.Component.getLocationOnScreen(Component.java:1945)
at apple.awt.CAccessibility$22.call(CAccessibility.java:370)
at apple.awt.CAccessibility$22.call(CAccessibility.java:368)
at apple.awt.CToolkit$CallableWrapper.run(CToolkit.java:1121)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at apple.awt.CToolkit$CPeerEvent.dispatch(CToolkit.java:1211)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:702)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:663)
at java.awt.EventQueue$2.run(EventQueue.java:661)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
据我所知,只有当我用鼠标做一些事情时,这个错误才会发生。
例如:
当我右键单击当前文件夹中的MATLAB函数时,单击“打开”.我将得到80%的机会来得到这个错误。但是,如果只是在命令窗口中键入编辑xxx.m。那我就永远不会犯这个错误了。 当我将变量从Workspace拖到变量编辑器时,我有80%的机会获得此错误。我也不知道如何使用命令在变量编辑器中查看变量。
而且,如果这个错误发生了,它会一直发生,直到你关掉你的MATLAB,如果你用鼠标做了一些事情,它会再次重新打开。例如通过鼠标添加路径到MATLAB搜索路径,用鼠标改变目录。如果您重新打开它,您将有80%的机会再次得到这个问题,当你使用鼠标。
还有其他人见过这种问题吗?我对java一无所知,有人能给我一些建议吗?谢谢。
发布于 2012-10-16 10:39:53
我不能说这个具体的错误,但是这样的错误在Matlab中是很常见的。这是由于Matlab中的一个错误(它是用Java编写的)。在本例中,它似乎试图打开特定于Mac的"Open file“对话框,但失败了,然后尝试获取该对话框的位置,该对话框引发了一个错误,因为它从未正确打开。一旦Java抛出一个错误,GUI就会变得混乱,并在您所做的每件事上抛出错误。
你似乎知道如何处理自己,但这是我给那些犯了这样错误的同事的一般建议:这些错误信息在你的屏幕上看上去很可怕,尤其是当它们在你触发第一个错误后每次点击时不断弹出时,但不要惊慌,它们通常是无害的。冷静地将您的工作区从通常工作的GUI中保存下来,或者使用命令save temp.mat
保存工作区,该命令几乎总是工作的。保存工作区后关闭Matlab,然后重新打开Matlab并从GUI或命令load temp.mat
加载工作区。现在,您的Matlab会话回来了,您还没有丢失任何数据。
发布于 2012-10-16 09:28:03
使用MATLAB version R2012a on MAC
的人也早些时候报告过这个问题。
尝试使用其他版本。否则在TMW上提交错误报告。
https://stackoverflow.com/questions/12911380
复制相似问题