天天看點

關于Eclipse RCP的兩個小問題和解決方法

1、如果你想在RCP應用程式裡使用Eclipse提供的Resource Navigator(它是IDE plugin的一部分),要在WorkbenchAdvisor裡加入如下代碼,否則在Navigator裡建立的項目和檔案名都會變為空:

WorkbenchAdapterBuilder.registerAdapters();

一 般加在preWindowOpen()方法裡就可以了,否則可能需要手動refresh才能看到已有的項目。當然,你還要在plugin dependencies裡加上org.eclipse.ui.ide和org.eclipse.ui.views,是以你的RCP程式會變得更大,這就 是代價,目前這個ResourceNavigator不被鼓勵用在RCP程式裡,以後版本的Eclipse可能會提供更合适的插件。

2、若你在運作RCP Application時遇到以下異常:

關于Eclipse RCP的兩個小問題和解決方法

java.lang.NoSuchMethodException: com.your.YourPlugin.<init>(org.eclipse.core.runtime.IPluginDescriptor)

關于Eclipse RCP的兩個小問題和解決方法

    at java.lang.Class.getConstructor0(Unknown Source)

關于Eclipse RCP的兩個小問題和解決方法

    at java.lang.Class.getConstructor(Unknown Source)

關于Eclipse RCP的兩個小問題和解決方法

    at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation(PluginDescriptor.java:403)

關于Eclipse RCP的兩個小問題和解決方法

    at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation(PluginDescriptor.java:359)

關于Eclipse RCP的兩個小問題和解決方法
關于Eclipse RCP的兩個小問題和解決方法

或是:

關于Eclipse RCP的兩個小問題和解決方法

org.eclipse.core.runtime.CoreException[1]: java.lang.ClassNotFoundException: com.your.YourApplication

關于Eclipse RCP的兩個小問題和解決方法

    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:404)

關于Eclipse RCP的兩個小問題和解決方法

    at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java:93)

關于Eclipse RCP的兩個小問題和解決方法

    at java.lang.ClassLoader.loadClass(Unknown Source)

關于Eclipse RCP的兩個小問題和解決方法

    at org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:307)

關于Eclipse RCP的兩個小問題和解決方法
關于Eclipse RCP的兩個小問題和解決方法

可以檢查一下你是否在plugin dependencies裡增加了org.eclipse.core.runtime.compatibility,我不太清楚這個plugin是做什麼用的,但隻要有它在我的RCP Application就無法啟動。

最後,如果希望在Eclipse的console裡顯示log而不是直接寫入到檔案中,可以在運作時加上-consoleLog參數。

繼續閱讀