2016-11-20 40 views
0

我得到Eclipse插件:java.lang.NoClassDefFoundError爲成功編譯組織/ jongo/ResultHandlerEclipse插件運行時產生的問題 - java.lang.NoClassDefFoundError

我的源代碼添加必要的jar files.I後已經使用project> build path將這些jar添加爲Eclipse中的參考庫。

現在的問題是這些外部jar文件在運行時期間不工作。

我的MANIFEST.MF文件只有一個罐子,而不是外部罐子。不知道如何在這裏添加外部罐子。

Bundle-ClassPath: Test.jar 

Build.properties

source.Test.jar = src/ 
bin.includes = plugin.xml,\ 
       META-INF/,\ 
       Test.jar 

請建議如何在運行時將看外部罐子運行我的應用程序。

+1

是在沒有發現罐子一個OSGi包?如果是的話,你不應該將jar添加到包含的jar中,而是添加到依賴項中。如果不是,你還應該將它添加到'build.properties'的'bin.includes'部分。 –

+0

謝謝。它現在正在工作:) – Ronak

回答

1

不要在創建插件時直接將jar添加到構建路徑。

你必須在你的插件(或其他插件)中包含所有的罐子,並設置Bundle-Classpath並在build.properties中包括罐子。如果您正在引用其他插件,只需將它們添加到您的插件的依賴關係中即可。

您可以使用MANIFEST.MF/plugin.xml/build.properties編輯器將它們添加到MANIFEST.MF。

在編輯器的「運行時間」選項卡上,將JAR添加到「Classpath」條目(應該還有一個用於主插件代碼的'。'條目)。

在編輯器的'Build'選項卡上,選中要包含在插件中的所有jar。你應該把jar放在你的插件的某個地方(例如'lib'目錄)。

例如,在此build.properties:

source.. = src/ 
output.. = bin/ 
bin.includes = META-INF/,\ 
       .,\ 
       plugin.properties,\ 
       plugin.xml,\ 
       lib/jogg-0.0.7.jar,\ 
       lib/jorbis-0.0.15.jar,\ 
       lib/vorbisspi1.0.2.jar,\ 
       icons/ 

我有三個罐子在 'lib' 目錄下。

的MANIFEST.MF這個樣子:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: %plugin.name 
Bundle-SymbolicName: greg.music.ogg;singleton:=true 
Bundle-Version: 2.0.0.qualifier 
Bundle-Vendor: %plugin.provider 
Bundle-Localization: plugin 
Require-Bundle: greg.music.core;bundle-version="1.0.0", 
greg.music.resources;bundle-version="1.0.0", 
org.eclipse.core.runtime, 
javazoom.jlgui.basicplayer, 
org.eclipse.e4.core.services;bundle-version="2.0.100" 
Bundle-ClassPath: ., 
lib/jogg-0.0.7.jar, 
lib/jorbis-0.0.15.jar, 
lib/vorbisspi1.0.2.jar 
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 
Import-Package: javax.annotation;version="1.0.0", 
javax.inject;version="1.0.0", 
org.eclipse.e4.core.di.annotations 

編輯器Runtime選項卡: enter image description here

構建標籤: enter image description here

+0

謝謝Greg的詳細幫助:) – Ronak