Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NoSuchMethodError:org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session;_Java_Hibernate - Fatal编程技术网

java.lang.NoSuchMethodError:org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session;

java.lang.NoSuchMethodError:org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session;,java,hibernate,Java,Hibernate,这是我的配置 它说没有找到这样的方法,但Java文档和我的Util文件中都存在这样的方法。我在某个地方读到它与hibernate 3和4交叉配置。我不能得到这个 com.mysql.jdbc.Driver jdbc:mysql://localhost/datacenter 根 管理 org.hibernate.dialogue.mysqldialogue 线 真的 真的 hibernate3捆绑 更新 真的 org.hibernate.hql.classic.ClassicQueryTrans

这是我的配置

它说没有找到这样的方法,但Java文档和我的Util文件中都存在这样的方法。我在某个地方读到它与hibernate 3和4交叉配置。我不能得到这个


com.mysql.jdbc.Driver
jdbc:mysql://localhost/datacenter
根
管理
org.hibernate.dialogue.mysqldialogue
线
真的
真的
hibernate3捆绑
更新
真的
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
这是我的Util文件:

包休眠数据;
导入org.hibernate.Session;
导入org.hibernate.SessionFactory;
导入org.hibernate.cfg.AnnotationConfiguration;
公共类HibernateUtil{
私有静态SessionFactory SessionFactory;
专用静态注释配置配置1;
静止的{
config1=(AnnotationConfiguration)新建AnnotationConfiguration()
.configure(“hibernate.cfg.xml”);
}
公共静态SessionFactory getSessionFactory(){
if(sessionFactory==null){
createSessionfactory();
} 
返回工厂;
}
私有静态void createSessionfactory(){
sessionFactory=config1.buildSessionFactory();
}
公共静态会话openSession(){
返回getSessionFactory().getCurrentSession();
}
公共静态void closeSessionFactory(){
//getSessionFactory().close();
}
公共静态无效保存(对象o){
会话s=openSession();
System.out.println(“kejrkvg”);
s、 beginTransaction();
s、 保存(o);
s、 getTransaction().commit();
//s.close();
//s.clear();
if(s.isOpen()){
s、 close();
}
closeSessionFactory();
}
公共静态无效删除(对象o){
会话s=openSession();
s、 beginTransaction();
s、 删除(o);
s、 getTransaction().commit();
//s.close();
}
公共静态T负载(类clazz,int-id){
会话s=openSession();
s、 beginTransaction();
T T=clazz.cast(s.load(clazz,id));
//s.getTransaction().commit();
返回t;
}
公共静态void update1(对象o){
会话s=openSession();
s、 beginTransaction();
s、 更新(o);
s、 getTransaction().commit();
//s.close();
}
}
它说没有找到这样的方法,但thta在Java文档中确实存在

错误是在运行时生成的,而不是在编译代码时生成的。因此,t看起来像是针对某个版本的代码编译的,但会在另一个版本(可能是更旧的版本)中执行。完整堆栈跟踪将包含有关不兼容性所在位置的更多信息


如果有疑问,可以使用
javap
查看从给定系统上的给定类路径加载的类是否实际包含该方法。如果预期使用的类路径没有提供该方法,则可能需要在该路径中安装正确版本的库。另一方面,如果它看起来也正确,那么这是一个很好的迹象,表明加载的类与您期望的类不同。然后,您可以添加调试代码来确定用于加载该类的类加载器,以查看该类的实际来源。

问题的公认答案还可以提供一些见解-
“在Hibernate 3.6中,SessionFactory.openSession不再返回org.Hibernate.classic.Session,而是返回org.Hibernate.Session。这是一个中断客户机代码的重构…”

需要查看java代码,其中会出现错误???@user1979730检查项目库。类路径中似乎有多个hibernate版本库。另请参见:如何解决此问题,但