java.lang.NoClassDefFoundError:org / eclipse / draw2d / LightweightSystem虽然添加了

时间:2013-05-31 00:28:43

标签: eclipse eclipse-plugin draw2d

我正在尝试使用draw2d进行插件开发。现在,我在代码中的所有内容都是:

import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.*;


public class GraphView extends ViewPart {

public GraphView() {

}
@Override
public void createPartControl(Composite parent) {

    //use LightweightSystem to create the bridge between SWT and draw2D
    final LightweightSystem lws = new LightweightSystem(new Canvas(parent, SWT.NONE));

}

@Override
public void setFocus() {
    // TODO Auto-generated method stub

}
}

当我启动我的eclipse应用程序时,我得到了org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError:org / eclipse / draw2d / LightweightSystem 。我将org.eclipse.draw2d作为外部jar添加到我的项目中。

有人可以帮我这个吗?提前谢谢!

2 个答案:

答案 0 :(得分:4)

将jar添加到构建路径只会使IDE中的编译器找到类。对于RCP应用程序,您必须将plug-in.xml中的jar作为外部jar添加。然后jar被捆绑在你的应用程序中,并在运行时可用。

您可以在选项卡Runtime上的Eclipse编辑器中执行此操作。单击classpath部分中的Add...并在此处添加jar。这会自动将jar添加到您的构建路径中,以便您可以在此之前将其删除。

您可以在此处找到详细说明(带图片):Adding a jar file to your Eclipse RCP Plugin

答案 1 :(得分:0)

现在把它作为我问题的答案:

当我收到错误时,Manifest.mf中的“required bundle”文件看起来像这样:

Require-Bundle: org.eclipse.ui,
                org.eclipse.core.runtime

我把它改为:

Require-Bundle: org.eclipse.core.runtime,
                org.eclipse.ui,
                org.eclipse.draw2d,
                org.csstudio.swt.widgets;
bundle-version="2.0.1";resolution:=optional, org.csstudio.swt.xygraph;
bundle-version="2.0.1";resolution:=optional**