繁体   English   中英

找不到类在eclipse中运行时出现异常

[英]Getting class not found Exception when running in eclipse

我在eclipse中运行以下代码但是找不到类的异常:

         import org.eclipse.jface.window.Window;
         import org.eclipse.swt.SWT;
         import org.eclipse.swt.widgets.Display;
         import org.eclipse.swt.widgets.Shell;



        public class DialogClass {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    System.out.println("TEst");
    Shell frame = new Shell(SWT.SHELL_TRIM);

    PublishGenericArtefactDialog publishGenericArtefactDialog =            
                       new PublishGenericArtefactDialog(frame);

    publishGenericArtefactDialog.setTitle("Test");

    if (publishGenericArtefactDialog.open() == Window.CANCEL){
        try {
            throw new Exception("Cancelled");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
      }
       }

       }

我得到的错误是

    TEst
    Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IStatus
at DialogClass.main(DialogClass.java:19)
     Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IStatus
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)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 1 more

需要帮忙

正如本帖所述

您是否Manfest.MF org.eclipse.core.runtime列为Manfest.MF的插件依赖Manfest.MF
我认为IStatus实际上是在Equinox包中,但运行时包含运行时的equinox插件。
如果您只是将其作为Java应用程序运行(例如,通过在类路径上粘贴Jars),那么您可能需要org.eclipse.equinox.core/runtime或类似的东西。

谢谢你的建议。 通过将org.eclipse.equinox.commonorg.eclipse.core.commands添加到项目的Java Build Path属性(我作为SWT应用程序运行)来解决该问题。

正如AlBlue在评论中所提到的, JFace上Eclipse wiki确认:

JFace可以在独立的SWT + JFace应用程序中使用,而无需Eclipse Runtime或Eclipse Platform的其他部分。
这在3.2(2006)中变得更容易,JFace的唯一先决条件被简化为:

  • SWT
  • 新的org.eclipse.equinox.common插件,
  • org.eclipse.core.commands插件。

有关更多详细信息,请参阅错误49497

在3.3中,添加了org.osgi.framework包的可选依赖项,该包在org.eclipse.osgi定义。
如果没有此插件,JFace将继续运行,但没有图像的国际化支持。

用于编译的类路径不一定与运行时类路径相同。 有一个启动配置(运行 - >运行...)将为你提供什么。

请注意,SWT jar只是API类 - 您需要一个用于实际运行时类的per-os二进制文件,因此可能会丢失。 如果你添加“swt”类路径容器,那么它应该做正确的事情。

当前项目中.classpath的内容是什么?

当您运行导出的产品时,如果您看到类似的东西,

org.osgi.framework.BundleException: 
The activator org.eclipse.ui.internal.WorkbenchPlugin 
for bundle org.eclipse.ui.workbench is invalid

...

Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.SWTError

它可以通过以下方式修复:

  1. 在产品文件上打开产品配置编辑器
  2. 单击“启动”选项卡
  3. 清除“程序参数”和“VM参数”字段。
  4. 重新导出产品

你为此导入了什么东西吗?

PublishGenericArtefactDialog publishGenericArtefactDialog =            
                       new PublishGenericArtefactDialog(frame);

暂无
暂无

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

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