最近一直再用SWT/JFace做PIMS的项目,本以为已经比较了解这个平台了,而且也比较喜欢,直到从SWT跳到JFace开发时才碰到问题,就是怎么也运行不了,错误如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: com.jface.applicationwindow.HelloJFace. Program will exit.
很奇怪的是我明明已经org.eclipse.core.runtime,于是就去包里直接找IPogressMonitor,发现果然没有这个类,虽然
所有的书中都没有写要导入其他的什么包。这个问题一直困扰了我两个晚上,我一狠心就直接去eclipse/plugin里面找
IPogressMonitor,却在org.eclipse.equinox.common包中找到了这个class,真是不知道eclipse是什么
用心,好好的一个工程却放在两个包里,搞的我完全不知所以然。
CSDN上有人
解释说org/eclipse/core/runtime这个包不是封装在一个jar包之下的,他们是属于两个项目的。
所以要想成用运行SWT/JFace程序必须从eclipse/plugin里面导入以下Jar文件:
org.eclipse.jface.text_3.5.1.r351_v20090708-0800.jar
org.eclipse.jface_3.5.1.M20090826-0800.jar
org.eclipse.core.runtime_3.5.0.v20090525.jar
org.eclipse.core.runtime.compatibility_3.2.0.v20090413.jar
org.eclipse.osgi_3.5.1.R35x_v20090827.jar
org.eclipse.core.commands_3.5.0.I20090525-2000.jar
org.eclipse.swt.gtk.linux.x86_3.5.1.v3555a.jar
org.eclipse.core.runtime.compatibility.auth_3.2.100.v20090413.jar
org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar
还发现一个比较好的网站:http://www.findjar.com/index.x
大家遇到找不到JAR文件的时候可以去这里找找。