4

我是这里的新人。

我在使用 MATLAB 时经常遇到 java 错误。我用的是intel 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% 的机会得到这个错误。但是如果只是在命令行窗口中输入edit xxx.m。那么我永远不会得到这个错误。

当我将变量从工作区拖到变量编辑器时,我有 80% 的机会出现此错误。而且我不知道如何使用命令在变量编辑器中查看变量。

而且,如果发生此错误,它将一直发生,直到您关闭 MATLAB 并重新打开,如果您使用鼠标执行某些操作。例如,通过鼠标添加路径到 MATLAB 搜索路径,使用鼠标更改目录。如果你重新打开它,当你使用鼠标时,你将有 80% 的机会再次遇到这个问题。

有没有其他人见过这类问题?我对java一无所知,谁能给我一些建议。谢谢。

4

2 回答 2

2

我无法谈论这个特定的错误,但这样的错误在 Matlab 中很常见。这是由于 Matlab GUI(用 Java 编写)中的一个错误。在这种情况下,它似乎试图打开特定于 Mac 的“打开文件”对话框,但失败了,然后它试图获取该对话框的位置,由于它从未正确打开而引发错误. 一旦 Java 抛出错误,GUI 就会变得混乱并在你所做的一切事情上抛出错误。

你似乎知道如何处理自己,但这里是我给遇到此类错误的实验室同事的一般建议:这些错误消息在你的屏幕上看起来很吓人,尤其是当你触发第一次点击后它们不断弹出时,但不要惊慌,它们通常是无害的。从通常有效的 GUI 或save temp.mat几乎总是有效的命令中冷静地保存您的工作区。保存工作区后关闭 Matlab,然后重新打开 Matlab 并从 GUI 或使用命令重新加载工作区load temp.mat。现在您的 Matlab 会话又回来了,您没有丢失任何数据。

于 2012-10-16T10:39:53.053 回答
1

使用的人也早先报告了此问题MATLAB version R2012a on MAC

尝试使用其他版本。否则在 TMW 提交错误报告。

于 2012-10-16T09:28:03.710 回答