Spring整合JUnit4之java.lang.ExceptionInInitializerError

这几日学习Spring,在整合JUnit4的时候出现bug,经过几天终于解决掉了。
遇到bug时,解决过程中难免心烦意乱,心灰意冷,做什么都没信心,进而否定自己。可愈是压抑,解决后的喜悦也愈是深刻。
下面记录一下遇到的问题及解决办法:
异常反馈代码(部分)如下:

java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

import javax.annotation.Resource;

import org.junit.runner.RunWith;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.itheima.demo1.UserService;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo2 {
    @Resource(name="userService")
    private UserService UserService;

    @Test
    public void run1(){
        UserService.sayHell();
    }
}

整个编译过程是没有任何报错的。对run1()进行JUnit Test后如图:
这里写图片描述
因为自己是按照黑马的教学视频进行学习,整个过程包括jar包严格一致,所以根本不知道问题在哪。这是jar包截图:
这里写图片描述
jar包对应的都是4.2.4,而且视频中也未出现问题,所以真的是捉急。(其实此时我已经能确定是test包出现了问题)怀疑是不是JDK不匹配的问题,所以把自己的JDK从1.6换到了1.8,但是问题依旧,此时排除了JDK版本原因,安心解决test.jar包问题。
在下图单击右键,选择Copy Trace
这里写图片描述
然后粘贴到记事本中,发现问题
这里写图片描述
把问题具体定位到SpringJUnit4ClassRunner ,而这个问题与包import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;相关,此时就已经完全可以定位到test.jar包上。
需要提升test.jar包版本
下面是操作:
这里写图片描述
然后打开计算机,进行粘贴,打开文件位置
这里写图片描述
下载一个更高级别的junit.jar,替换下图中的junit.jar
这里写图片描述
楼主用的是junit-4.12.jar,然后粘贴进去替换掉junit.jar
此时需要注意,替换进去的jar包应该和原jar包同名,不然程序依旧无法运行。
至此问题就已经全部解决掉。至于如何发现要把名字改为同名,可以继续往下看:
工程上右击–>Properties–>Java Build Path–>Libraries
这里写图片描述
missing即找不到,它是按照名字进行查找,所以把jar包名字换成原名。


以上就是解决问题全过程,大牛勿笑。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBefor
05-31

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值