【问题标题】:Problems With SWT on MacMac 上的 SWT 问题
【发布时间】:2010-04-30 17:48:28
【问题描述】:

我有一个使用 SWT UI 的 java 项目,但我无法在任何 Mac OS X 计算机上部署它。该程序本身可以在 Windows 上完美运行,无论是在 Eclipse 中还是从 jar 文件中运行。在 Mac 上,该程序在 Eclipse 中也可以正常运行,但是当我尝试从 jar 文件运行它时,出现以下错误:

2010-04-30 13:33:04.564 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x10b9b0 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x944acf4f 0x943b9432 0x678fb79 0x35a19b1 0x359ba7f)
2010-04-30 13:33:04.566 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x115ef0 of class NSCFNumber autoreleased with no pool in place - just leaking
Stack: (0x944acf4f 0x943b9432 0x678a0b0 0x35a19b1 0x359ba7f)
2010-04-30 13:33:04.567 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x121000 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x944acf4f 0x943b9432 0x678fb79 0x35a19b1)
2010-04-30 13:33:04.581 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x123720 of class NSPathStore2 autoreleased with no pool in place - just leaking
Stack: (0x944acf4f 0x943ba637 0x943c238f 0x943c1e8e 0x943c694b 0x678992e 0x35a19b1)
2010-04-30 13:33:04.582 java[17825:41b] *** _NSAutoreleaseNoPool(): Object 0x12d660 of class NSPathStore2 autoreleased with no pool in place - just leaking
Stack: (0x944acf4f 0x943ba637 0x943b9739 0x943c3eb2 0x943c6b22 0x678992e 0x35a19b1)
...
...
...

实际的错误要大得多,并一直持续到程序崩溃。

我知道我使用了正确的 swt.jar 文件,并且我尝试使用 -XstartOnFirstThread VM 参数运行程序,但仍然没有任何运气。

是否有人有任何想法或建议可以让我开始寻找解决方案?

谢谢。

【问题讨论】:

  • 我要做的第一件事是尝试 Eclipse 的 Carbon 和 Cocoa 版本,看看是否有区别。
  • 涉及哪些版本的Mac OS X、Java和Eclipse?

标签: java macos swt


【解决方案1】:

应用程序是捆绑的还是从命令行运行的?如果捆绑,则需要将键 StartOnMainThread 和值 true 放入 Info.plist 文件的 Java 字典中。如果未捆绑,则参数为 java -XstartOnFirstThread。是的,它们是不同的,是的,不幸的是,这很烦人。

【讨论】:

  • 如果在 Mac OS X 上的 SWT 中没有设置 StartOnFirstThread 选项,这绝对是您将看到的。
  • 您能详细说明一下吗?我有类似的情况,其中 SWT 执行失败并出现 SWTException,描述为:“无效的线程访问”。我怀疑它也可能与主线程有关
  • Mac 上的 SWT 操作必须始终在主线程上进行,并且必须在创建 Display 的同一线程上。该异常听起来像是您正在从不同的线程调用 SWT。
【解决方案2】:

SWT 没有垃圾收集。我猜你正在运行的代码导致操作系统内存泄漏,这是通过 Eclipse 控制台报告的。

错误消息不是 Java 错误消息,而是 Obj-c 错误消息,证实了我的怀疑。

您可以在这里阅读更多相关信息。http://www.eclipse.org/articles/swt-design-2/swt-design-2.html

这是一个链接,讨论您实际看到的 Obj-c 错误。 http://www.idevgames.com/forum/archive/index.php/t-7710.html

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-12-15
    • 2011-10-16
    • 2012-03-18
    • 2020-03-24
    • 2017-12-05
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多