繁体   English   中英

Eclipse中的JFace和Assertion ClassNotFoundException

[英]JFace and Assertion ClassNotFoundException in Eclipse

我正在阅读一本书中的示例,但遇到了错误,我不知道是什么原因导致的错误以及如何解决它。

操作系统:Windows7 64bit,面向Java开发人员的Eclipse IDE,已安装JFace或更好的说法是附加到项目的jar,Eclipse随附的默认jar:

  • org.eclipse.jface_3.8.102.v20130123-162658.jar
  • org.eclipse.jface.databinding_1.6.0.v20120912-132807.jar
  • org.eclipse.jface.text_3.8.2.v20121126-164145.jar

这是应用程序代码:

import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

public class TableLayoutExample {
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);

        shell.setSize(500, 400);
        shell.setText("Table Example");
        shell.setLayout(new FillLayout());

        TableLayout layout = new TableLayout();
        layout.addColumnData(new ColumnWeightData(40, 80, true));
        layout.addColumnData(new ColumnWeightData(40, 80, true));
        layout.addColumnData(new ColumnWeightData(40, 80, true));
        Table table = new Table(shell, SWT.SINGLE);
        table.setLayout(layout);
        TableColumn column1 = new TableColumn(table, SWT.CENTER);
        TableColumn column2 = new TableColumn(table, SWT.CENTER);
        TableColumn column3 = new TableColumn(table, SWT.CENTER);
        TableItem item = new TableItem(table, SWT.NONE);
        item.setText(new String[] { "column 1", "column 2", "column 3" });
        item = new TableItem(table, SWT.NONE);
        item.setText(new String[] { "a", "b", "c" });

        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

这是错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/Assert
    at org.eclipse.jface.viewers.ColumnWeightData.<init>(ColumnWeightData.java:70)
    at TableLayoutExample.main(TableLayoutExample.java:21)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.Assert
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

任何想法可能出了什么问题?

下载eclipse-equinox-common-3.5.0.jar

Files contained in eclipse-equinox-common-3.5.0.jar: 

.api_description
META-INF/ECLIPSEF.RSA
META-INF/ECLIPSEF.SF
META-INF/MANIFEST.MF
META-INF/eclipse.inf

...

org.eclipse.core.runtime.Assert.class
org.eclipse.core.runtime.AssertionFailedException.class

所以看起来您好像缺少eclipse-equinox-common.jar的最新版本,或者它不在您的类路径中……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM