簡體   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