JaamSim 在 Eclipse 下启动时崩溃

Posted

技术标签:

【中文标题】JaamSim 在 Eclipse 下启动时崩溃【英文标题】:JaamSim crashing on Start up under Eclipse 【发布时间】:2020-11-30 15:11:27 【问题描述】:

我对此真的很陌生,并试图让 JaamSim 工具在 Eclipse 中运行,以便为我的学士论文运行模拟。

当我尝试运行配置时,我会得到一个 libc++abi.dylib:以 NSException 类型的未捕获异常终止。 JaamSim 加载窗口总是会打开一小会儿,然后再次关闭并显示“GUIFrame was unexpectedly closed”

我尝试了几天新的并且我没有想法......安装了来自采用openjdk的最新jdk,以及apache ant和maven。还链接了 .bash_profile 中的所有内容

如果有人能指导我找到解决方案,我将不胜感激。我在此处添加了终端日志表单 eclipse1

顺便说一句,如果有帮助,我在 Mac 上

【问题讨论】:

嗨,欢迎,告诉我们你从哪里得到代码 - 这只是你试图运行的标准演示吗? 它构成了我的大学,所以它是基本的 JaamSim 东西以及他们制作的一些配置 【参考方案1】:

您遇到的“异常”不是 Java 异常。它是原生的 Objective-C NSException。 “NS”代表下一个步骤。它是 OS X 和 macOS 的祖先旧版 NeXTSTEP OS 的陈词滥调。我可以理解您的困惑,因为 Objective-C 和 Java 都使用“异常”一词。

同样,您发布的日志不是 Java 堆栈跟踪,而是来自您的 Java 图形所依赖的本机框架的基于 NSLog 的线程转储。您在链接的图像中截断了实际异常的文本。我猜你没有识别格式,所以没有看到有用的信息。

我猜 NSException 消息的全文是“NSWindow 拖动区域应该只在主线程上无效!如果是这样的话,那么我认为您的问题可能是由于从后台线程更改某些图形引起的。

系统图形,例如窗口、警报等,在 macOS 中通过一个名为“Cocoa”的框架进行管理。 NSWindow 是一个 Cocoa 对象。 Cocoa(和大多数 UI 框架)的重要规则之一是 您应该只从主线程更改 Cocoa 对象(如 NSWindow)。您可能正在对您的 GUI 进行一些更改(特别是,使拖动区域无效)来自后台线程。 Java 对此没有任何固有问题,但 Cocoa 有。所以你得到的是本机错误而不是 Java 错误。

TL;DR: 只能在主线程中使用您的 GUI。您收到此错误是因为您正在从后台线程更改 GUI。

编辑:做了一些研究之后。

似乎某些 Java OpenGL 库会出现此特定问题,尤其是 lwjgl。您可以看到解决问题here 的非常坚定但最终没有结果的努力。我不确定 JaamSim 中使用了什么 OpenGL Java 接口,但他们documented this same problem as far back as 2018 说

这个错误原来是我们用于 3D 图形的 JOGL 软件的一个已知问题。不幸的是,修复到位需要一段时间。

同样的 JOGL 错误是 documented again in 2019。在那里,它似乎解决了。他们的修复报告是

完全封装这两种结构以在主线程上运行

我不确定您对此有多少控制权。您最好的选择是首先将-XstartOnFirstThread 标志添加到您的java 命令中。我还会检查您班上是否有人能够在 Mac 上完成这项工作。有时,在浪费时间之前做一个快速的不可能检查是很好的。

【讨论】:

感谢您的回答!图片包括来自 Eclipse 终端的所有内容,但您的崩溃报告包括“NSWindow 拖动区域应仅在主线程上无效!”对于我的系统站点上的这个问题,我能做些什么吗?还是代码造成的问题?再次为我的菜鸟问题真的失去了atm感到抱歉......也许这张崩溃报告的图片有帮助? i.stack.imgur.com/z3raT.png @MF1893 我在答案中添加了我能做的。我强烈建议尝试-XstartOnFirstThread 标志,并检查是否有人在 Mac 上完成了这项工作。如果它是 JaamSim 内部的一个错误,那么您可能需要在另一台机器上运行它。 嘿,再次感谢。我发现了同样的 JOGL Bug,但遗憾的是它对我没有帮助。关于 -XstartOnFirstThread 我是否理解正确,我应该将它添加到 VM 参数中?因为如果是这样的话,我猜这已经发生在预设的刻度上 i.stack.imgur.com/b9bgg.jpg @MF1893 我想我会确保您使用 SWT 启动。我很想知道解决方案是什么。因此,如果您在找到一个后回到这里,将不胜感激。 我很遗憾没有找到问题,所以我切换到运行良好的 Windows。似乎是一个 Mac 问题,因为它也不能在 Parallels 上运行,而是在干净的 Windows 分区上运行。但是,这可能会在将来有所帮助groups.google.com/g/jaamsim-users/c/JGqmj9CRXcU

以上是关于JaamSim 在 Eclipse 下启动时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 工作区在启动时崩溃

Eclipse 在启动时崩溃;退出代码=13

Eclipse 在启动时崩溃;退出代码=13

关于启动JVM的Eclipse崩溃终止了。退出代码= 2错误

Android应用程序在启动时崩溃[关闭]

为啥应用程序在启动活动时崩溃?