سؤال

أحاول استخدام YFREECHART في تطبيق RCP مع عرض بسيط. أضفت ملف JFreechART JAR ككتبة مرجعية إلى المشروع.

لا يمكن إنشاء العرض بسبب الخطأ:

Could not create the view: Plug-in "ViewJFreeChart" was unable to instantiate class "viewJFreeChart.View".
java.lang.NoClassDefFoundError: org/jfree/data/general/PieDataset
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)

......

هذا هو التعليمات البرمجية المصدر لعرضها. Java:

package viewJFreeChart;

import java.awt.Font;

import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.experimental.chart.swt.ChartComposite;

public class View extends ViewPart {
    public static final String ID = "ViewJFreeChart.view";

    private TableViewer viewer;

    /**
     * This is a callback that will allow us to create the viewer and initialize
     * it.
     */
    public void createPartControl(Composite parent) {

        JFreeChart chart = createChart(createDataset());
        final ChartComposite frame = new ChartComposite(parent, SWT.NONE,
                chart, true);
    }

    /**
     * Passing the focus request to the viewer's control.
     */
    public void setFocus() {
        viewer.getControl().setFocus();
    }

    /**
     * Creates the Dataset for the Pie chart
     */
    private PieDataset createDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("One", new Double(43.2));
        dataset.setValue("Two", new Double(10.0));
        dataset.setValue("Three", new Double(27.5));
        dataset.setValue("Four", new Double(17.5));
        dataset.setValue("Five", new Double(11.0));
        dataset.setValue("Six", new Double(19.4));
        return dataset;
    }

    /**
     * Creates the Chart based on a dataset
     */
    private JFreeChart createChart(PieDataset dataset) {

        JFreeChart chart = ChartFactory.createPieChart("Pie Chart Demo 1", // chart
                // title
                dataset, // data
                true, // include legend
                true, false);

        PiePlot plot = (PiePlot) chart.getPlot();
        plot.setSectionOutlinesVisible(false);
        plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
        plot.setNoDataMessage("No data available");
        plot.setCircular(false);
        plot.setLabelGap(0.02);
        return chart;

    }
}
هل كانت مفيدة؟

المحلول

عندما تقول إنك تقول إنك أضفت التبعية ككتبة مرجعية، أفترض أنك تعني أنك أضفتها كاعتمالة جرة إلى مشروع الكسوف عبر جافا بناء المسار قسم من خصائص المشروع، سيعمل هذا فقط على تجميع في مساحة العمل الخاصة بك. يحتاج RCP إلى تبعيات / تم تعريف الجرار المتداخلة في البيان لذلك يتم حلها في النظام الأساسي المستهدف.

لتعيين تبعية البرنامج المساعد، افتح ملف البيان الخاص بك، يجب أن تشاهد محرر متعدد التبويب. حدد التبعيات علامة التبويب والنقر يضيف..., ، حدد البرنامج المساعد، وموافق.

dependencies tab screenshot

إذا كنت تختار حزم جرة في البرنامج المساعد الخاص بك، فأنت بحاجة بدلا من ذلك إلى إضافتها إلى Classpath في البيض. على افتراض أن الجرة في دليل فرعي لمشروع البرنامج المساعد الخاص بك، حدد مدة العرض علامة تبويب محرر البيان، ثم حدد classpath. القسم يضيف... زر. أضف جرة وموافق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top