NoClassDefFoundError:com / beans / MyBean

时间:2012-10-15 11:46:14

标签: java noclassdeffounderror

我知道这个问题被问得不够。以前的时间,但不幸的是我仍然无法找到解决方案。我正在尝试从命令提示符(没有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中使用它们。

我已经关注了很多链接来解决这个问题。其中一些是:

What causes and what are the differences between NoClassDefFoundError and 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

2 个答案:

答案 0 :(得分:0)

确保您的bean可以在JAR文件中找到com/beans/MyBean.class。即当您使用jar tf列出JAR文件的内容时,必须有一行读取

com/beans/MyBean.class

一定是这样的。还要确保您已将JAR添加到类路径中。您可以使用此代码进行检查:

URL url = getClass().getClassLoader().getResource("com/beans/MyBean.class"),

如果urlnull,则该类不在运行时类路径上。

答案 1 :(得分:0)

错误的起点是

com.facadeimplementation.hibernate.util.HibernateFactory.configureSessionFactory(HibernateFactory.java:83)

然后你就到了。

Exception in thread "main" java.lang.NoClassDefFoundError: com/beans/MyBean

您可能在POJO中使用第三方依赖关系 API正在引用其他一些API。如果它也从CLASSPATH中丢失了。您可能会收到此错误。

只需检查您在POJO com/beans/MyBean中使用的第三方依赖关系是否在CLASSPATH中。

正如你所提到的那样,它正在从eclipse运行find。

从CMD运行时,所有.jar个文件在eclipse CLASSPATH中也都在CLASSPATH中。

可能是您列出了在该POJO中使用的API。这可能会更有帮助。