我正在开发一个相当复杂的 Java
应用程序,混合了 Swing
和 SWT
。每当我启动应用程序时,这是控制台输出(应用程序未显示):
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
我遵循了许多指南和教程设置:
System.setProperty("com.apple.awt.CocoaComponent.CompatibilityMode", "false");
-XstartOnSecondThread
--launcher-on-secondThread
现在我真的没有任何线索。使我的应用程序在 Mac OSX
上运行的唯一方法是将 Eclipse 项目导出到 JAR 可执行文件
。好吧,这很烦人。有人可以向我解释如何设置上面的这些属性吗?有什么妙招吗?
编辑:我正在使用:
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
最佳答案
我遇到过这个问题好几次了,因为我在一家人人都使用 Eclipse 的 Java 商店工作,而且我是 OS X 用户。
修复有点奇怪。
您需要从“已安装的 JRE”首选项中删除当前的 JRE,然后重新添加。执行此操作时,请确保选择“标准 JVM”而不是“Mac OS X JVM”。
添加 JRE 有点烦人,因此在执行此操作之前请记下“Location”路径字符串。您会将它指向同一个地方,只需更改“Type”属性即可。
所以,我的回答是错误的。如果您只使用 Swing/AWT,这是相关的,但很幽默,在发布这篇文章后我不得不立即编写一个 SWT_AWT boondoggle,即使使用上述设置,我在我的 Mac 上也遇到了同样的错误。我怀疑这与 Swing/AWT 和 SWT 在事件循环方面的差异有关(SWT = 自带,Swing = 由 JVM 提供)。我在 IntelliJ IDEA 12 中也遇到了错误,所以这不仅仅是 Eclipse 问题。
关于JAVA SWT/AWT Eclipse Mac OSX Java Cocoa CompatibilityMode Enabled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951883/