启用JAVA SWT/AWT Eclipse Mac OSX JAVA Cocoa兼容模式

启用JAVA SWT/AWT Eclipse Mac OSX JAVA Cocoa兼容模式,java,cocoa,swing,swt,awt,Java,Cocoa,Swing,Swt,Awt,我正在开发一个相当复杂的Java应用程序,它混合了Swing和SWT。无论何时启动应用程序,这都是控制台输出(应用程序不会显示): 我遵循了许多指南和教程设置: System.setProperty(“com.apple.awt.CocoaComponent.CompatibilityMode”、“false”) -xstartonsecondhread --第二个线程上的启动器 现在我真的没有任何线索。让我的应用程序在Mac OSX上运行的唯一方法是将Eclipse项目导出到JAR可执行文件中

我正在开发一个相当复杂的
Java
应用程序,它混合了
Swing
SWT
。无论何时启动应用程序,这都是控制台输出(应用程序不会显示):

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

  • System.setProperty(“com.apple.awt.CocoaComponent.CompatibilityMode”、“false”)
  • -xstartonsecondhread
  • --第二个线程上的启动器
  • 现在我真的没有任何线索。让我的应用程序在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 
    

    我的Macbook也有同样的问题,因为我可以看到你正在下载EclipseIndigo,这是你能做的最好的了。Juno有缺陷,而且速度很慢,因为它比以前的版本消耗更多的性能。我认为靛蓝是最好的选择。我知道Java是可移植的、多平台的,但在使用苹果设备之后,我发现Java与我有些不兼容,我认为不是因为Java,而是因为iOS,这就是为什么我能做的最好的事情就是用Ubuntu安装一个虚拟机。因此,您可以在您喜欢的Linux发行版上尝试同样的方法。

    我曾多次遇到过这个问题,因为我在一家Java商店工作,那里每个人都使用Eclipse,而我是一名OS X用户

    修复有点奇怪

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

    添加JRE有点烦人,所以在添加之前请注意“Location”路径字符串。您将它指向同一个位置,只需更改“Type”属性


    所以,我的答案是错误的。如果你只是在做Swing/AWT,这是很有意义的,但是很幽默,在发布这篇文章之后,我不得不写一个SWT_AWT boondogle,我在我的Mac上也遇到了同样的错误,即使有上面的设置。我怀疑这与Swing/AWT和SWT在事件循环方面的差异有关(SWT=自带,Swing=由JVM提供)。我在IntelliJ IDEA 12中也遇到了错误,所以这不可能只是Eclipse问题。

    当我使用jar生成图形时,我遇到了一个模拟问题。je jar使用的swt似乎与OSX不兼容。如果您正在使用swt或使用swt导入jar,请尝试将其删除,并使用awt创建一个等效的jar

    什么版本的Eclipse?现在我正在下载Indigo。。。希望这能解决问题。不,它不适用于Indigo。你是说当你从Eclipse运行时没有设置这些属性?如果您正在设置它们,如何设置?您可能需要在
    -vmargs
    之后的运行/调试配置中进行设置,在
    eclipse.ini
    中进行设置应该没有效果。我认为您只需要
    -vmargs-Dcom.apple.awt.CocoaComponent.CompatibilityMode=false-XstartOnFirstThread
    。您不需要
    --launcher.secondThread
    ,因为这只会影响Swing启动器。据我所知,没有
    -xstartonsecondhread
    这样的东西。我最终使用了Netbeans,它在第一次正确启动时没有添加任何内容。从PC到Mac再到GNU/Linux,一种所谓的“多平台”语言出现了如此多的问题,这真是太遗憾了-(Neo同意,但是SWT!= java)java本身是一个跨平台的好工作,但是SWT高度依赖本地代码和它的桥的质量。它也不是任何官方java工作规范的一部分,它是由Eclipse基金会所有的,最初是IBM产品。任何依赖于本地库的东西都是GO。是的,我正在考虑移植到JavaFX。这样我可以删除所有Swing和SWT部分。JavaFX有自己的webbrowser实现。
    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