在Mac OS上将eclipse rcp app从3.3升级到3.5的问题

时间:2010-03-16 14:11:35

标签: java cocoa eclipse macos eclipse-rcp

我以前有一个基于eclipse 3.3 pugins的eclipse rcp应用程序部署在windows和mac OS X 10.4上。我现在正试图在Mac OS X 10.5.8(Leopard)上将应用程序移植到java 1.6和eclipse 3.5(Build id:20100218-1602)插件。

我可以在Windows上从eclipse 3.5启动产品,但不能在Mac OS X上启动。我有64位cocoa eclipse IDE和java 6.在启动配置中,我将运行时JRE设置为JVM 1.6.0并添加了所需的插件。插件验证,其他所有内容都与Windows配置类似,但是当我启动时,我只在控制台中获得以下两行:

2010-03-16 13:29:32.742 java[758:10b] [Java CocoaComponent compatibility mode]: Enabled
2010-03-16 13:29:32.744 java[758:10b] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000

然后程序似乎无限期挂起。没有任何内容写入.log文件,所以我不确定它有什么错误。

编辑:在所有cpu活动停止之前,这是Yourkit分析所说的内容。

+----------------------------------------------------------------------------+----------------+-----------------+  
|                                    Name                                    |   Time   (ms)    |  Own Time (ms)  |  
+----------------------------------------------------------------------------+----------------+-----------------+  
|  +---<All threads>                                                         |  2,799  100   %  |                 |
|    |                                                                       |                |                 |
|    +---org.eclipse.equinox.launcher.Main.main(String[])                    |  1,924  69% |              0  |  
|    |                                                                       |                |                 |  
|    +---org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run()  |    632   23 %  |              0  |
|    |                                                                       |                |                 |  
|    +---java.lang.Thread.run()                                              |    135    5 %  |              0  |
|    |                                                                       |                |                 |  
|    +---java.lang.ClassLoader.loadClassInternal(String)                     |    106    4 %  |              0  |  
+----------------------------------------------------------------------------+----------------+-----------------+  

,这在例外标签中:

Exception staticstics

+----------------------------------------+--------------+
|                  Name                  |    Count     |
+----------------------------------------+--------------+
|  +---java.lang.ClassNotFoundException  |  102   11 %  |
|  |                                     |              |
|  +---java.net.MalformedURLException    |    4    0 %  |
|  |                                     |              |
|  +---java.lang.NoSuchMethodException   |    3    0 %  |
|  |                                     |              |
|  +---java.lang.NumberFormatException   |    2    0 %  |
|  |                                     |              |
|  +---java.io.FileNotFoundException     |    1    0 %  |
|  |                                     |              |
|  +---java.lang.UnsatisfiedLinkError    |    1    0 %  |
+----------------------------------------+--------------+

以及上面提到的ClassNotFoundExceptions的详细信息:

java.lang.ClassNotFoundException
Start Level Event Dispatcher native ID: 0x8B0B group: 'main'      78
Thread-4 native ID: 0x10B group: 'main'                           22
Framework Event Dispatcher native ID: 0xD207 group: 'main'         2

任何人都知道为什么我在Eclipse或任何日志文件中都没有看到这样的痕迹?我应该看看哪些想​​法?

[更新日期:2010年3月16日星期二09:37]

2 个答案:

答案 0 :(得分:0)

可可64位的SWT对于3.5来说是不稳定的。

首先不支持它(请参阅此blog entry

您可以检查是否在最新的eclipse 3.6M6中看到了同样的问题。

答案 1 :(得分:0)

原来是一些从主插件构造函数调用的代码导致挂起。它将jpeg图像文件加载到BufferedImage。这已在早期版本中添加为黑客,以修复有关代码的mac版本上的图像处理的一些错误。现在它似乎不仅不再需要了(删除后bug没有重现)但它会导致应用程序在启动时挂起!