我知道这个问题问得够多了。以前在这里的次数,但不幸的是我仍然无法找到解决方案。我正在尝试从命令提示符(没有 Eclipse)运行 swt-java 项目并得到以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: com/beans/MyBean
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:70)
at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:276)
at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:401)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:334)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
at org.hibernate.cfg.Configuration.add(Configuration.java:669)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at com.facadeimplementation.hibernate.util.HibernateFactory.configureSessionFactory(HibernateFactory.java:83)
at com.facadeimplementation.model.dao.MyDao.<init>(MyDao.java:23)
at com.facadeimplementation.model.dao.MappingDao.<init>(MappingDao.java:23)
at com.ui.MainForm.<init>(MainForm.java:45)
at com.ui.MainForm$1.run(MainForm.java:77)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at com.ui.MainForm.main(MainForm.java:74)
Caused by: java.lang.ClassNotFoundException: com.beans.MyBean
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 37 more
我能够在 Eclipse 中成功运行这个项目。
MyBean.java包含在一个 Jar 中。我在项目中使用了很多 POJO,因此无法直接使用它们,而不是在 jar 中使用它们。
我已经关注了很多链接来解决这个问题。他们之中有一些是 :
NoClassDefFoundError 和 ClassNotFoundException 之间的原因和区别是什么?
http://javaeesupportpatterns.blogspot.in/2012/06/javalangnoclassdeffounderror-how-to.html
http://javarevisited.blogspot.in/2011/06/noclassdeffounderror-exception-in.html
谁能帮我?
编辑
我正在尝试使用以下命令运行我的 Java 应用程序:
java -classpath .:swt.jar:mybeans.jar:(other necessary jars separated by :) com.ui.MainForm.java