Hirbernate 在JUnit运行时的错误

问题描述

我是新手,刚学Hirbernate抄的程序(北京尚学堂-马士兵),运行出现的问题,望大虾们赐教:这是运行的程序packagecom.bjsxt.hibernate.modle;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.AnnotationConfiguration;importorg.junit.AfterClass;importorg.junit.BeforeClass;importorg.junit.Test;publicclassTeacherTest{privatestaticSessionFactorysf=null;@BeforeClasspublicstaticvoidbeforeClass(){System.out.println("eeeeeeeeeeeee");sf=newAnnotationConfiguration().configure().buildSessionFactory();System.out.println("ffffffffffffff");}@TestpublicvoidtestTeacherSave(){System.out.println("gggggggggggggg");Teachert=newTeacher();t.setId(2);t.setName("t2");t.setTitle("中级");Sessionsession=sf.openSession();session.beginTransaction();session.save(t);session.getTransaction().commit();System.out.println("cccccccccccccccc");session.close();System.out.println("dddddddddddddddddd");}publicstaticvoidmain(String[]args){System.out.println("hhhhhhhhhhhh");beforeClass();}@AfterClasspublicstaticvoidafterClass(){System.out.println("aaaaaaaaaa");sf.close();System.out.println("bbbbbbbbbbbb");}}这是运行后在CONSOLE界面显示的内容eeeeeeeeeeeeeaaaaaaaaaa这是在JUJUnit界面显示的内容TeacherTestcom.bjsxt.hibernate.modle.TeacherTestjava.lang.NullPointerExceptionatcom.bjsxt.hibernate.modle.TeacherTest.afterClass(TeacherTest.java:44)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atorg.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)atorg.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)atorg.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)atorg.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:37)atorg.junit.runners.ParentRunner.run(ParentRunner.java:236)atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

解决方案

解决方案二:
sf=newAnnotationConfiguration().configure().buildSessionFactory();sf没有实例化,所以在afterClass里面sf会有空指针错误。把sf=newAnnotationConfiguration().configure().buildSessionFactory();用trycatch包围一下再调试
解决方案三:
2楼那个也是一个调试的办法。。。你这个里的代码没有出错估计就是你配置里面那里写错了。。。。把sf=newAnnotationConfiguration().configure().buildSessionFactory();trycatch一下估计就有明显的错误了。。。。你用junit有会就是有那个不报错的bug.
解决方案四:
你就再顺带的把spring加进来算咯用它来管你的什么sessionFactory和session什么的事务也是
解决方案五:
这个try/catch我试过了。这是在JUnit环境下运行的显示:eeeeeeeeeeeeeaaaaaaaaaa这是用runas运行后的显示:hhhhhhhhhhhheeeeeeeeeeeeeExceptioninthread"main"java.lang.IncompatibleClassChangeError:Implementingclassatjava.lang.ClassLoader.defineClass1(NativeMethod)atjava.lang.ClassLoader.defineClass(ClassLoader.java:621)atjava.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)atjava.net.URLClassLoader.defineClass(URLClassLoader.java:260)atjava.net.URLClassLoader.access$000(URLClassLoader.java:56)atjava.net.URLClassLoader$1.run(URLClassLoader.java:195)atjava.security.AccessController.doPrivileged(NativeMethod)atjava.net.URLClassLoader.findClass(URLClassLoader.java:188)atjava.lang.ClassLoader.loadClass(ClassLoader.java:307)atsun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)atjava.lang.ClassLoader.loadClass(ClassLoader.java:252)atjava.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)atcom.bjsxt.hibernate.modle.TeacherTest.beforeClass(TeacherTest.java:21)atcom.bjsxt.hibernate.modle.TeacherTest.main(TeacherTest.java:49)“java.lang.IncompatibleClassChangeError”这个错误语句我在网上搜过了,没找到解决方法
解决方案六:
sf=newAnnotationConfiguration().configure().buildSessionFactory();不仅sf没有实例化,下面的testTeacherSave()方法也没有执行。这个问题挺怪的
解决方案七:
哈哈,你跟着他做肯定不行啦,因为你runas的时候,是测试testTeacherSave()方法,但是beforeClass()方法根本还没执行,所以你要测试通过,一定要整个类测试,明白了没?
解决方案八:
你用的hibernate的什么版本的3.2?sf=newAnnotationConfiguration().configure().buildSessionFactory();??不是sf=newConfiguration().buildSessionFactory();??
解决方案九:
谢谢大家的关心,这个问题已经解决,积分系统会自动分配给大家,因为这个BUG我也忘了是怎么解决的了,这里也祝大家新年快乐!

时间: 2024-11-03 14:18:17

Hirbernate 在JUnit运行时的错误的相关文章

图片-请问:用glassfish,jsp连接数据库,运行时出现错误如图,是什么原因?

问题描述 请问:用glassfish,jsp连接数据库,运行时出现错误如图,是什么原因? 解决方案 jsp 第2行 第77个字符处 解决方案二: jsp页面的第二行,有引用符号错误!

iostream-请大神一看!使用tinyxml编译出来的程序运行时的错误!

问题描述 请大神一看!使用tinyxml编译出来的程序运行时的错误! 因为是新手刚学习tinyxml,所以谢了个生成xml文件的cpp试试,编译时没问题,但是程序运行时会出现:xml: malloc.c:2395: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (ol

qt 运行时的错误,g_main_context_push_thread_default'

问题描述 qt 运行时的错误,g_main_context_push_thread_default' undefined reference to g_main_context_push_thread_default' undefined reference tog_main_context_pop_thread_default' 解决方案 hi, undefined reference to XXX 说明没有找到/链接到包含该函数(XXX)的库. 而具体的 g_main_context_pus

vtk-基于对话框的VTK应用程序运行时的错误

问题描述 基于对话框的VTK应用程序运行时的错误 6C 1>------ 已启动生成: 项目: vtkDialog 配置: Debug Win32 ------1>正在编译...1>CvtkView.cpp1> WINVER not defined. Defaulting to 0x0600 (Windows Vista)1>D:VTKvtk-5.10.1-binvtkConfigure.h(194) : error C2628: "CvtkView"后面

angularjs-初学AngularJs 运行时出现错误

问题描述 初学AngularJs 运行时出现错误 代码 错误 解决方案 http://www.yyyweb.com/3019.html 解决方案二: 运行时出现Stack overflow错误 解决方案三: http://angularjs.cn/A007

vs中编写了一个会显示水平和竖直滚动条的程序,但是运行时出现错误的结果,请问这是为啥?

问题描述 vs中编写了一个会显示水平和竖直滚动条的程序,但是运行时出现错误的结果,请问这是为啥? 这是源代码: #include #include"resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { static

helloworld-编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )

问题描述 编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld ) 编写的java(HelloWorld )程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )4401149_109648.png) 解决方案 你的类名是HelloWorld吗?!不是的话是找不到的哦 解决方案二: 类名是HelloWorld 解决方案三: 应该是 public class HelloWorld{ ... } 解决方案四: 你的命令行输入的是什么?

sqlserver-sql2008运行时出现错误

问题描述 sql2008运行时出现错误 解决方案 sql server没有连接上,查看你的连接字符串是否正确 解决方案二: 不知道你有没有在不同版本的VS做过?如果有点话就会出现类是问题.或者同上.浅见尔 解决方案三: sqlserver看看是否配置成允许远程连接了 解决方案四: sql server没有连接上, 解决方案五: 检查tcp/ip协议有没有启用 sql server有没有正常运行 远程访问有没有启用 参考:http://www.jb51.net/article/41473.htmh

异常-C#运行时出现错误,求大神指点

问题描述 C#运行时出现错误,求大神指点 "System.FormatException"类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 输入字符串的格式不正确. 为什么doubleparse那里错了? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.L