[英]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.