java.lang.NoClassDefFoundError: org/hibernate/exception/DataException
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:615)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:377)
at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:974)
at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:967)
at com.lesoa.common.dao.impl.CommonDaoHibernateImpl.queryByProperty(CommonDaoHibernateImpl.java:333)
at com.lesoa.common.dao.impl.CommonDaoHibernateImpl.queryOneByProperty(CommonDaoHibernateImpl.java:315)
at com.lesoa.sysM.service.impl.UserServiceImpl.queryOneByUserName(UserServiceImpl.java:64)
......
出现该问题的原因是没有找到相关的class文件。
仔细检查项目中Hibernate包中的class文件,发现的确没有DateException.class这个文件。重新下载一个Hibernate包导入。问题解决。
又出现下面问题:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonDaoHibernate' defined in class path resource [test/applicationContext.xml]: Cannot resolve reference to bean 'oaSessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oaSessionFactory' defined in class path resource [test/applicationContext-datasource.xml]: Invocation of init method failed; nested exception is java.lang.UnsupportedClassVersionError: org/hibernate/cfg/SecondPass (Unsupported major.minor version 49.0)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oaSessionFactory' defined in class path resource [test/applicationContext-datasource.xml]: Invocation of init method failed; nested exception is java.lang.UnsupportedClassVersionError: org/hibernate/cfg/SecondPass (Unsupported major.minor version 49.0)
Caused by: java.lang.UnsupportedClassVersionError: org/hibernate/cfg/SecondPass (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:147)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:474)
at java.net.URLClassLoader.access$500(URLClassLoader.java:108)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:846)
......
在Google中搜索发现导致该问题的原因有两个,下面是引用别人的描述:
1,It's relatively easy - hibernate.jar that you use was compiled with JDK 1.5 (corresponds to class file version 49) without specifiying a target option.
You need to rebuild that jar from source using JDK 1.4. Just download hibernate sources, unpack and run build.bat. Note that Hibernate's build.xml has target specifed as 1.4, so you have to obtain jar usable with 1.4 even if you compile with 1.5. (因为导入的包class文件的编译JDK同项目的JDK不相符导致,需要对导入包重新编译)
2,Another cause of problem may be that you have somewhere on classpath another version of the hibernate.jar (or class in question outside of jar).(因为在导入的包里面有其他的相同的class文件并且版本不一样,需要移除一个。)
对我导入的Hibernate包进行查找发现Hibernate3.jar和Hibernate-annotation里面有相同的文件,移除Hibernate-annotation包,问题解决。但又出现下面问题:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonDaoHibernate' defined in class path resource [test/applicationContext.xml]: Cannot resolve reference to bean 'oaSessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oaSessionFactory' defined in class path resource [test/applicationContext-datasource.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oaSessionFactory' defined in class path resource [test/applicationContext-datasource.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter
Caused by: java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter
at org.hibernate.bytecode.javassist.BytecodeProviderImpl.getProxyFactoryFactory(BytecodeProviderImpl.java:49)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactoryInternal(PojoEntityTuplizer.java:203)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:181)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:158)
at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:76)
......
该问题是因为没有导入javassist.jar包,导入即可。上述问题解决之后,程序能够找到异常类并给予相关错误的准确提示:
org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: userName of: com.lesoa.sysM.vo.T_USER; nested exception is org.hibernate.QueryException: could not resolve property: userName of: com.lesoa.sysM.vo.T_USER
Caused by: org.hibernate.QueryException: could not resolve property: userName of: com.lesoa.sysM.vo.T_USER
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:61)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1402)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:54)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1377)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:457)
在t_user类里面没有找到对应的userName属性!(这里是我们的命名规范很又问题,实在是丢人)!以后切记!将userName改为username问题解决。
所以项目中错误的包的引入是一件很让人头疼的事情!
分享到:
相关推荐
"解决 Java 编译成功后运行 Class 文件出现“找不到或无法加载主类”的问题" 在 Java 开发中,经常会遇到一个问题,即 javac 编译成功后,用 java 运行 Class 文件却出现“找不到或无法加载主类”的错误信息。这种...
然而,开发和部署Applet时,开发者经常会遇到“找不到class”的问题,这通常是由于类路径配置不当或者文件组织结构错误导致的。本文将详细讲解如何解决这两种常见情况。 **第一种情况:Applet类不在任何包中** 当...
标题 "解决安装CDC改串驱动提示系统找不到指定文件.rar" 涉及的是在计算机上安装CDC(Communiucation Device Class)驱动时遇到的问题,其中“系统找不到指定文件”通常是一个错误提示,意味着在安装过程中缺少了...
通过仔细检查配置,确保编译过程正常,以及正确管理项目依赖,大多数情况下都能解决找不到资源文件的问题。在解决问题的过程中,不断学习和理解类加载机制以及构建工具的工作原理,对于提高开发效率和避免类似问题的...
本文将详细探讨如何在MyEclipse环境中解决这种问题,主要关注如何使用反编译插件来查看`.class`文件的源码。 首先,`.class`文件是Java程序编译后的结果,它包含了机器可执行的字节码,但通常不包含人类可读的源...
确保你的类路径包含了包含主类的.jar文件或者编译后的.class文件所在的目录。 2. **打包错误**:如果你使用Maven或其他构建工具,可能会因为打包设置不当导致问题。例如,Maven的`<mainClass>`标签在`pom.xml`中未...
它允许用户查看并理解已编译的.class文件的内容,因为Java的源代码(.java文件)通常不会随可执行文件一起发布。`JavaDecompiler`这个标题暗示我们将探讨如何使用Java反编译器来打开和解析.class文件。 Java类文件是...
Java Class文件是Java源代码经过编译器处理后的二进制形式,...总之,"java class文件查看工具"是Java开发者的重要辅助工具,它使得开发者能深入到JVM层面理解代码,对提升开发效率和解决复杂问题有着不可忽视的作用。
然而,Java的.class文件通常是不可编辑的,因为它们是编译后的机器可读格式,直接修改可能会导致无法正常运行。但如果你确实需要修改.class文件,可能需要使用像JAD (Java反汇编器和汇编器) 或FernFlower这样的工具...
jad能够将字节码(class文件)转换回可读的源代码形式,虽然不能完全恢复到原始的Java源代码,但大多数情况下,我们仍能理解代码逻辑。jadClipse使得在Eclipse中直接查看和分析class文件变得简单易行。 首先,安装...
在使用JD-GUI时,操作简单直观:只需将需要反编译的.class文件拖放到JD-GUI界面,程序会自动分析并显示源代码。但是,当.class文件中包含中文字符时,如果不做处理,可能会出现中文乱码的情况。这是因为JD-GUI默认...
总的来说,ClassFinal作为一款Java class文件安全加密工具,为开发者提供了一种简单、高效的代码保护方案,尤其适合于那些重视代码安全但又不想改动大量代码的企业级项目。其兼容性和易用性使其在Java开发领域具有...
在本文中,我们将深入探讨 `<jsp:plugin>` 动作元素的使用,以及如何解决在Lomboz和Eclipse环境下遇到的“找不到.class文件”的问题。 首先,`<jsp:plugin>` 是JSP标准标签库(JSTL)的一部分,它允许开发者在页面...
如果不在源代码的目录下运行,JVM可能找不到主类,因为`.class`文件不在当前工作目录中。 例如,假设你有一个名为`HelloWorld.java`的文件,其中包含主类`HelloWorld`,并且你已经使用`javac HelloWorld.java`成功...
Idea 多模块项目依赖父工程class找不到问题的方法是指在使用 Idea 开发多模块项目时,子模块无法找到父模块的 class 文件的问题。这种情况经常发生在使用 Maven 构建多模块项目时,虽然 Maven 帮助我们构建好了依赖...
4. **查看结果**:XJad会将反编译的结果输出到终端或生成文本文件,你可以根据输出来理解Class文件的原始源代码结构。 5. **注意事项**:由于反编译过程中可能会出现语法不完全恢复的情况,因此,反编译出的源代码...
`java修改class文件`这个主题涵盖了如何操作和理解Java字节码,以便对二进制类文件进行更改。在这个过程中,`jclasslib bytecode viewer`是一个非常重要的工具,它允许开发者可视化并分析Java字节码。 首先,我们要...
在使用JD-GUI时,你只需将需要查看的.class文件拖放到其窗口上,或者通过菜单栏的"Open File"选项来打开。一旦加载完成,JD-GUI会以源代码的形式显示出来,包括类名、方法、变量等各个组成部分,使得阅读和理解变得...
3. **加载类文件**:在jd-gui界面中,你可以直接拖放.class文件到窗口,或者使用菜单的"File" -> "Open Class..."选项来选择文件。 4. **查看反编译结果**:jd-gui会显示反编译后的源代码,你可以浏览、搜索和复制...