14

我正在开发一个相当复杂的Java应用程序混合SwingSWT. 每当我启动应用程序时,这是控制台输出(并且应用程序不显示):

2012-12-19 12:45:45.359 java[3442:f07] [Java CocoaComponent compatibility mode]: Enabled
2012-12-19 12:45:45.360 java[3442:f07] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000

我遵循了许多指南和教程设置:

  1. System.setProperty("com.apple.awt.CocoaComponent.CompatibilityMode", "false");
  2. -XstartOnSecondThread
  3. --launcher-on-secondThread

现在我真的一点头绪都没有。使我的应用程序正常运行的唯一方法Mac OSXexport the Eclipse project to a JAR executable. 好吧,这很烦人。有人可以向我解释如何设置上面的这些属性吗?有什么魔术吗?

编辑:我正在使用:

OSX Mountain Lion 10.8.2 ,
Java 1.6u37 64bit,
SWT 4.2 cocoa x64,
Windows XP ,
Java 1.6u37 32bit,
SWT 4.2 32bit 
4

3 回答 3

1

我曾多次遇到此问题,因为我在一家 Java 商店工作,每个人都使用 Eclipse,而且我是 OS X 用户。

修复有点奇怪。

您需要从“已安装的 JRE”首选项中删除当前的 JRE,然后再次添加。执行此操作时,请确保选择“标准 JVM”而不是“Mac OS X JVM”。

添加 JRE 有点烦人,所以在添加之前请记下“Location”路径字符串。您将它指向同一个地方,只需更改“类型”属性。

所以,我的回答是错误的。如果你只做 Swing/AWT 是相关的,但是在发布这个之后我不得不立即写一个 SWT_AWT boondoggle 并且我在我的 Mac 上遇到了同样的错误,即使使用上述设置。我怀疑这与 Swing/AWT 和 SWT 之间关于事件循环的差异有关(SWT = 自带,Swing = 由 JVM 提供)。我在 IntelliJ IDEA 12 中也遇到了错误,所以这不仅仅是 Eclipse 问题。

于 2013-02-20T16:22:47.973 回答
0

当我使用 jar 生成图表时,我遇到了一个类似的问题。je jar 使用了似乎与 OSX 不兼容的 swt。如果您正在使用 swt 或使用 swt 导入了一个 jar,请尝试删除它并找到一个使用 awt 的等效项

于 2015-02-14T00:47:33.393 回答
0

我在我的 Macbook 中遇到了同样的问题,因为我可以看到您正在下载 Eclipse Indigo,这是您能做的最好的。Juno 有错误,而且速度很慢,因为它比以前的版本消耗更多的性能。我认为 Indigo 是最好的选择。我知道 Java 是可移植的和多平台的,但是在使用苹果设备之后,我发现与 Java 存在某种不兼容,我认为不是因为 Java,而是因为 iOS,这就是为什么对我来说我能做的最好的就是安装带有 Ubuntu 的虚拟机。因此,您可以尝试使用您喜欢的 Linux 发行版。

于 2013-02-20T12:55:58.620 回答