2014-02-14 41 views
1

我只是試圖用vaadin圖表實現簡單的條形圖。 就像下面級別的教程一樣,我寫了代碼。NoClassDefFoundError:在Vaadin圖表中的com/google/gson/TypeAdapterFactory

鏈接:http://demo.vaadin.com/charts/#BasicBar

但是,當我試圖延長,因爲沒有這樣的類「AbstractVaadinChartExample」,我只是使方法公共靜態。

下面是我所做的。

  1. 我下載vaadin圖表1.1.5.jar
  2. 我把我的vaadin 7項目
  3. 除了添加在最後一個行我沒有修改原始代碼。 layout.addComponent(BasicBar.getChart());
  4. 我的BasicBar.java和上面的鏈接一樣,但我沒有擴展任何東西,並且使getChart()方法成爲'public static'。
  5. 現在,我得到 '的NoClassDefFoundError:COM /谷歌/ GSON/TypeAdapterFactory' 錯誤:-(

我不明白,因爲我沒有做什麼用的東西GSON

我的代碼,如:。

package org.owls.chart; 

import java.util.ArrayList; 
import java.util.List; 

import com.vaadin.addon.charts.Chart; 
import com.vaadin.addon.charts.model.ChartType; 
import com.vaadin.addon.charts.model.Configuration; 
import com.vaadin.addon.charts.model.HorizontalAlign; 
import com.vaadin.addon.charts.model.Labels; 
import com.vaadin.addon.charts.model.LayoutDirection; 
import com.vaadin.addon.charts.model.Legend; 
import com.vaadin.addon.charts.model.ListSeries; 
import com.vaadin.addon.charts.model.PlotOptionsBar; 
import com.vaadin.addon.charts.model.Title; 
import com.vaadin.addon.charts.model.Tooltip; 
import com.vaadin.addon.charts.model.VerticalAlign; 
import com.vaadin.addon.charts.model.XAxis; 
import com.vaadin.addon.charts.model.YAxis; 
import com.vaadin.ui.Component; 

public class BasicBar { 
    @SuppressWarnings({ "unchecked", "rawtypes" }) 
    public static Component getChart() { 
     Chart chart = new Chart(ChartType.BAR); 
     Configuration config = chart.getConfiguration(); 

     config.setTitle("basic chart"); 
     config.setSubTitle("2014.02.14"); 

     //X 
     XAxis xAxis = new XAxis(); 
     xAxis.setCategories("A", "B", "C", "D", "E"); 
     xAxis.setTitle("xTitle"); 
     config.addxAxis(xAxis); 

     //Y 
     YAxis yAxis = new YAxis(); 
     yAxis.setMin(0); 
     Title tile = new Title("y title"); 
     tile.setVerticalAlign(VerticalAlign.HIGH); 
     yAxis.setTitle(tile); 
     config.addyAxis(yAxis); 

     Tooltip toolTip = new Tooltip(); 
     //??? 
     toolTip.setFormatter("this.series.name : + ': ' + this.y +' millions'"); 
     config.setTooltip(toolTip); 

     //plot 
     PlotOptionsBar plot = new PlotOptionsBar(); 
     //???? 
     plot.setDataLabels(new Labels(true)); 
     config.setPlotOptions(plot); 

     Legend legend = new Legend(); 
     legend.setLayout(LayoutDirection.VERTICAL); 

     legend.setHorizontalAlign(HorizontalAlign.RIGHT); 
     legend.setVerticalAlign(VerticalAlign.TOP); 
     legend.setX(-100); 
     legend.setY(100); 

     legend.setFloating(true); 
     legend.setBorderWidth(1); 
     legend.setBackgroundColor("#FFFFFF"); 
     legend.setShadow(true); 

     config.setLegend(legend); 

     config.disableCredits(); 

     List series = new ArrayList(); 
     series.add(new ListSeries("Year 1800", 107, 31, 635, 203, 2)); 
     series.add(new ListSeries("Year 1900", 133, 156, 947, 408, 6)); 
     series.add(new ListSeries("Year 2008", 973, 914, 4054, 732, 34)); 
     config.setSeries(series); 

     chart.drawChart(config); 
     return chart; 
    } 
} 

我該如何解決 感謝:?d

當你的JAR沒有參考,

回答

0

的NoClassDefFoundError將抵達該項目由此引發。隨着你所做的微小的代碼更改,我不認爲它會導致NoClassDefFoundError。

能否請您提供更多信息:

  1. 它是簡單的Java項目或web應用程序?

  2. 您已經添加了JAR,但是您是否明確地在eclipse中使用「Build classpath」將其放入類路徑中?

  3. 沒有你的微小變化,程序能否成功運行?

+0

謝謝,Nikhil。我會給你你需要的信息。 #1的回答只是'vaadin project 7.X'(它來自Vaadin eclipse插件)#2 - 當然,我已經將jar文件的構建路徑添加到我的項目中,因此我可以使用no編譯錯誤。 #3 - 不能嘗試,因爲演示網站不提供完整的源代碼。他們只是顯示一個類的定義(你可以用我在後臺提供的鏈接檢查它) –

0

Vaadin是基於GWT的,所以我懷疑你正在運行一個開發服務器。如果您正在啓動由開發服務器> VM參數

-

如果是這樣,添加GSON路徑你-Xbootclasspath

-Xbootclasspath/p:/somepath/libraries-master/appengine-java-sdk-1.9.48/lib/override/appengine-dev-jdk-overrides.jar:/p:/somepath/war/WEB-INF/lib/gson-2.2.4.jar 

在Eclipse中,查看運行配置 - >參數Ant或其他腳本,你將不得不在那裏調整-Xbootclasspath。