Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cache
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cache相关的知识,希望对你有一定的参考价值。
我用annotations做hibernate操作时报这个错误请问是什么原因:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cacheable
at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:953)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:596)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:636)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:359)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
at TeacherTest.main(TeacherTest.java:17)
环境,hibernate3.5.5_annotations3.4.0
两个java类
TeacherTest
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.bjsxt.hibernate.model.Teacher;
public class TeacherTest
public static void main(String[] args)
Teacher t=new Teacher();
t.setId(1);
t.setName("t1");
t.setTitle("教受");
Configuration cfg=new AnnotationConfiguration();
SessionFactory sf=cfg.configure().buildSessionFactory();
Session session=sf.openSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
session.close();
sf.close();
Teacher
package com.bjsxt.hibernate.model;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Teacher
private int id;
private String name;
private String title;
@Id
public int getId()
return id;
public void setId(int id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getTitle()
return title;
public void setTitle(String title)
this.title = title;
hibernate.cfg.xml中的mapping
<mapping class="com.bjsxt.hibernate.model.Teacher"/>
需要加入hibernate-distribution-3.5.0-Final\lib\jpa目录下的hibernate-jpa-2.0-api-1.0.0.Final.jar
到path中 参考技术A Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cacheable
Caused by: java.lang.ClassNotFoundException: javax.persistence.Cacheable
错误原因,javax.persistence.Cacheable 是 JPA 2.0 规范中的东西!
需要加入hibernate-distribution-3.5.0-Final\lib\jpa目录下的hibernate-jpa-2.0-api-1.0.0.Final.jar 参考技术B 你的classpath错了吧!
具体的:你的classpath后面少了.; 参考技术C project右键--MyEclipse--Add Hibernate Capabilities...
Exception in thread "main" java.lang.UnsupportedClassVersionError
在用自定义Classloader加载class文件时,出现了这个错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Hello : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.lang.ClassLoader.defineClass(ClassLoader.java:643) at JVM.MyClassLoader.findClass(MyClassLoader.java:21) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at JVM.ClassLoaderChecker.main(ClassLoaderChecker.java:6)
我这里
是因为在cmd上javac编译的,但是你eclipse的编译环境与你系统上的不一样。我就是,配的1.8但是eclipse用的是1.7的环境,然后就一直报错,改成1.8后就好了。
原因:
这个问题确实是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误。
1、解决措施就是保证jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,则在命令行中分别输入java -version和javac -version命令来查看版本是否一致。这里假设都是1.7版本。
2、如果都一致,但还是解决不了问题,那么你肯定不是直接在命令行中用javac来编译的,而是用类似于eclipse、netbeans这样的编译器来编译的。因为很多编译器都自带javac,而不是采用操作系统中的编译器。如果你的编译器是eclipse的话,那么需要在项目的属性里设置jdk版本,方法是右击项目-->properties-->java compiler --> Enable project specific settings -->将compiler compliance level设置为1.7,也就是与jvm一致的版本(在命令行中java -version所显示的版本)。
综上,如果你是用编译器来编译的话,请首先确保编译器自带的jdk版本是否和操作系统中的java版本一致。
以上是关于Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cache的主要内容,如果未能解决你的问题,请参考以下文章
Exception in thread "main" java.lang.UnsupportedClassVersionError
Exception in thread "main" java.util.InputMismatchException
Exception in thread "main" java.lang.ClassCastException
Exception in thread "main" java.lang.UnsatisfiedLinkError:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1