繁体   English   中英

OS-X上的VTK Java,可可异常

[英]VTK Java on OS-X, Cocoa-Exceptions

我安装了VTK工具包,并在Eclipse中将Java包装器用于VTK。 我将vtk.jar添加到我的Java项目中,并将环境变量设置为指向我的VTK安装。 基本上,它正在工作。 找到vtk类等,然后程序开始运行,至少直到我到达显示窗口的位置为止。

例如下面的示例程序: http : //www.vtk.org/Wiki/VTK/Examples/Java/Imaging/ImageTest

如果我运行它,则OS-X(或Cocoa)会引发以下异常,指出UndoManager的某些问题:

我不知道我做错了什么或导致此问题的原因,有人有什么想法吗?

2012-05-22 22:48:09.093 java[925:1a03] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-833.25/Misc.subproj/NSUndoManager.m:324
2012-05-22 22:48:09.093 java[925:1a03] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
2012-05-22 22:48:09.096 java[925:1a03] (
    0   CoreFoundation                      0x00007fff9363cf56 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff8aa9fd5e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff9363cd8a +[NSException raise:format:arguments:] + 106
    3   Foundation                          0x00007fff910a371f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 169
    4   Foundation                          0x00007fff9101295f +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 144
    5   AppKit                              0x00000001025680ef -[NSApplication run] + 596
    6   libvtkRendering.5.10.dylib          0x000000010ff8c2df -[vtkCocoaServer start] + 335
    7   libvtkRendering.5.10.dylib          0x000000010ff8cf87 _ZN30vtkCocoaRenderWindowInteractor5StartEv + 293
    8   libvtkRenderingJava.5.10.0.dylib    0x000000010f94f29e Java_vtk_vtkRenderWindowInteractor_Start_15 + 62
    9   ???                                 0x0000000103b70d6e 0x0 + 4357295470
    10  ???                                 0x0000000103b6585a 0x0 + 4357249114
)
2012-05-22 22:48:09.096 java[925:1a03] *** Assertion failure in +[NSUndoManager _endTopLevelGroupings], /SourceCache/Foundation/Foundation-833.25/Misc.subproj/NSUndoManager.m:324
2012-05-22 22:48:09.096 java[925:1a03] An uncaught exception was raised
2012-05-22 22:48:09.097 java[925:1a03] +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.
2012-05-22 22:48:09.098 java[925:1a03] (
    0   CoreFoundation                      0x00007fff9363cf56 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff8aa9fd5e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff9363cd8a +[NSException raise:format:arguments:] + 106
    3   Foundation                          0x00007fff910a371f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 169
    4   Foundation                          0x00007fff9101295f +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 144
    5   AppKit                              0x000000010256819c -[NSApplication run] + 769
    6   libvtkRendering.5.10.dylib          0x000000010ff8c2df -[vtkCocoaServer start] + 335
    7   libvtkRendering.5.10.dylib          0x000000010ff8cf87 _ZN30vtkCocoaRenderWindowInteractor5StartEv + 293
    8   libvtkRenderingJava.5.10.0.dylib    0x000000010f94f29e Java_vtk_vtkRenderWindowInteractor_Start_15 + 62
    9   ???                                 0x0000000103b70d6e 0x0 + 4357295470
    10  ???                                 0x0000000103b6585a 0x0 + 4357249114
)
2012-05-22 22:48:09.098 java[925:1a03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+[NSUndoManager(NSInternal) _endTopLevelGroupings] is only safe to invoke on the main thread.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff9363cf56 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff8aa9fd5e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff9363cd8a +[NSException raise:format:arguments:] + 106
    3   Foundation                          0x00007fff910a371f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 169
    4   Foundation                          0x00007fff9101295f +[NSUndoManager(NSPrivate) _endTopLevelGroupings] + 144
    5   AppKit                              0x000000010256819c -[NSApplication run] + 769
    6   libvtkRendering.5.10.dylib          0x000000010ff8c2df -[vtkCocoaServer start] + 335
    7   libvtkRendering.5.10.dylib          0x000000010ff8cf87 _ZN30vtkCocoaRenderWindowInteractor5StartEv + 293
    8   libvtkRenderingJava.5.10.0.dylib    0x000000010f94f29e Java_vtk_vtkRenderWindowInteractor_Start_15 + 62
    9   ???                                 0x0000000103b70d6e 0x0 + 4357295470
    10  ???                                 0x0000000103b6585a 0x0 + 4357249114
)
terminate called throwing an exception

建议的VM参数导致此错误:

2012-05-23 09:10:18.635 java[747:307] [Java CocoaComponent compatibility mode]: Enabled
2012-05-23 09:10:18.635 java[747:307] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000
2012-05-23 09:10:18.985 java[747:d303] *** -[NSConditionLock unlock]: lock (<NSConditionLock: 0x7fa108c64600> '(null)') unlocked when not locked
2012-05-23 09:10:18.985 java[747:d303] *** Break on _NSLockError() to debug.

这可能是与可可限制有关的问题,即某些事情只能在进程运行的第一个线程上运行。 例如,SWT事件循环也会出现相同的问题。 问题在于main方法没有在第一个线程上执行,因为它是为AWT的事件循环保留的-出于相同的原因。 解决方法:使用JVM开关-XstartOnFirstThread

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM