2014-03-04 64 views
1

我正在使用eclipse e4 rcp應用程序,並試圖在其中使用JfreeChart。所以我在Build path的外部jar文件中添加了jcommon-1.0.16.jar,jfreechart-1.0.14.jar,jfreechart-1.0.14-experimental.jar和jfreechart-1.0.14-swt.jar。我在運行應用程序時出現以下錯誤java.lang.NoClassDefFoundError:org/jfree/data/xy/XYDataset

org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: org/jfree/data/xy/XYDataset 
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:344) 
    at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:254) 
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162) 
............. 
Caused by: java.lang.ClassNotFoundException: org.jfree.data.xy.XYDataset cannot be found by com.xyz.project_1.0.0.qualifier 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501) 

任何人都可以請建議如何繼續?

+1

你有一個插件,它包含了JFreeChart的罐子,和你想使用XYDataset這個插件外的類路徑(除了建議你注射XYDataset成一些方法)。如果是這樣,你需要導出jfreechart類,另一個插件需要依賴於導出jfreechart類的插件。 (注:我在一個Eclipse E4富客戶端應用程序中使用jfreechart,它的工作原理) – Stefan

+0

不。我沒有使用插件。我剛剛下載了這些罐子,並將其添加到構建路徑中。我必須做出其他更改嗎? – Acjb

+0

通常的方法是將jar添加到插件(plugin.xml/manifest)。這些信息用於配置OSGi類加載機制。構建路徑僅在構建時使用。 – Stefan

回答

1

可能有另一個罐子丟失。您需要檢查所有jar是否存在於項目的Eclipse構建路徑中。

您是否在命令行上從Eclipse IDE外部運行應用程序? 如果是,則設置類路徑

SET CLASSPATH=pathtojar1;pathtojar2 

執行程序之前。

或指定的命令本身

java -cp pathtojar1;pathtojar2;yourClassesFolderOrYourJar [ yourclassname or -jar yourjarname] 
+0

我正在Eclipse中運行應用程序。我需要將它添加到RunConfigurations-> Program參數中嗎?如果是這樣的話,現在已經有一些論據了。我必須附加程序參數中提到的命令嗎? P.S:我是新來的日食 – Acjb

+1

[[我是否需要將它添加到RunConfigurations-> Program參數中? ]] - 我不這麼認爲。請嘗試通過指定classpaths從命令行運行。我稍微更新了我的答案。在類路徑中也包含您自己的類文件夾。將jar添加到您的項目> Rightclick> Properties> Java Build Path應該可以工作。當Eclipse從內部執行Java程序時,Eclipse會將構建路徑Jar添加到您的類路徑中。或者他們改變了外部罐子的新版本中的東西? – RuntimeException

+0

確實讓我知道是否有幫助。我也很想知道陷阱是什麼:-) – RuntimeException