2009-10-02 23 views
3

我正在創建一個需要jdt.ui.JavaUI類的插件。我將jdt.ui插件包含到依賴項中。這是我的Manifest.MF:Eclipse插件:org/eclipse/jdt/ui/JavaUI上的NoClassDefFoundError

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: PanelGenerator Plug-in 
Bundle-SymbolicName: PanelGeneratorPlugin; singleton:=true 
Bundle-Version: 0.1.0 
Bundle-Activator: panelgenerator.plugin.Activator 
Require-Bundle: org.eclipse.jdt.core, 
org.eclipse.ui, 
org.eclipse.core.runtime, 
org.eclipse.core.resources, 
org.eclipse.ui.ide, 
org.eclipse.jdt.ui 
Eclipse-LazyStart: true 

,這是我的build.properties:

source.. = src/ 
output.. = bin/ 
bin.includes = plugin.xml,\ 
      META-INF/,\ 
      .,\ 
      icons/,\ 
      templates/ 

在編譯的時候我沒有得到任何編譯錯誤。如果我使用Eclipse調試插件(Debug as - > Eclipse Application),它可以正常工作。

但是,當我導出它,然後將其複製到Eclipse插件文件夾中時,該插件不起作用。只要使用了JavaUI類,就沒有任何反應。錯誤日誌報告如下:

java.lang.NoClassDefFoundError: org/eclipse/jdt/ui/JavaUI 

有關爲什麼會發生這種情況的任何想法?

+0

正如Steve所建議的那樣,您能否提供更多關於如何「安裝」插件的詳細信息(用於開發插件的Eclipse版本,插件安裝的Eclipse版本,使用的過程導出插件,用於安裝插件的過程等)。 在導出/安裝階段可能會出現此問題,因爲當您從工作區啓動Eclipse的新實例時,插件將工作。 – Barthelemy 2010-03-14 11:59:48

回答

0

我能想到的唯一的事情就是您正在編譯的版本不同於您正在運行的版本,並且存在非二進制兼容更改。您可以在eclipse bug 177476中看到類似情況。

2

「Require-Bundle」中插件的順序非常重要!你應該以最基本的優先順序排列。

我建議:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: PanelGenerator Plug-in 
Bundle-SymbolicName: PanelGeneratorPlugin; singleton:=true 
Bundle-Version: 0.1.0 
Bundle-Activator: panelgenerator.plugin.Activator 
Require-Bundle: org.eclipse.core.runtime, 
org.eclipse.core.resources, 
org.eclipse.jdt.core, 
org.eclipse.ui, 
org.eclipse.ui.ide, 
org.eclipse.jdt.ui 
Eclipse-LazyStart: true 

這是因爲日食加載從您提供的順序束的類。如果訂單不是從「基本」到「非基本」,這可能會造成麻煩。試試這個,它可能有幫助。

0

您嘗試使用哪種版本的Eclipse?如果您使用3.4(Ganymede)或3.5(Galileo),則不能只是將新插件添加到插件文件夾中。嘗試將您的插件放入dropins文件夾中(這是dropins文件夾的用意)。

當您的插件準備好進行更持久的部署時,可以使用P2元數據導出它,並使用更新管理器啓動它。

如果您使用的是舊版本的Eclipse,則.log文件可能會給您一些關於該插件的詳細信息。

0

是的,如果您將插件導出到jar中,並將其複製到插件 eclipse安裝的文件夾中,某些依賴項將不起作用(包括org.eclipse.jdt.ui)。實際上,我相信如果你像這樣分發插件,只有org.eclipse.core中的包才能正常工作。

實際安裝插件,你需要做以下之一:

  1. 複製出口的jar文件放進的dropins(未插件)文件夾。插件將在您下次啓動eclipse時安裝。
  2. Export and Install into the Running Host
  3. 創建一個feature項目,update site並通過安裝新軟件選項菜單安裝插件。
相關問題