[英]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.common
和org.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
它可以通過以下方式修復:
你為此導入了什么東西嗎?
PublishGenericArtefactDialog publishGenericArtefactDialog =
new PublishGenericArtefactDialog(frame);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.