【Spring in Action 4】 【Bugs && Solutions】九九归一表

Title:Spring学习报错记录 Author:刘赛赛 Date:2018/12/17 ----------------0-----------0------------------ ----------------0-----------0------------------

1.##问题场景一:ApplicationContext 定义变量的时候,报错是“BeansException 没有处理”。 ##解决方案:在StackOverflow网站上,找到的解决方法是,引入spring-core.jar包。其他网站上说的什么包版本问题,都是瞎扯。

----------------0-----------0------------------ ----------------0-----------0------------------

2.*##问题场景二 log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Exception in thread "main" java.lang.NoSuchFieldError: logger ##解决方法 :写一个Logger文件进去,并加入记录。未解决状态,bug位置在MySpringBase项目的Main10代码中。 ----------------0-----------0------------------ ----------------0-----------0------------------

3.##问题场景描述三 Caused by: java.lang.ClassNotFoundException: org.springframework.expression.ParserContext at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) ##分析与解决方法: 应该是缺了一个spring-expression.jar包。添加这个包之后,问题就解决了(或者说改变了)

3.1##新问题出现:org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.hdu.autowire.Cat] for bean with name 'cat' defined in class path resource [spring-cfg.xml]; nested exception is java.lang.ClassNotFoundException: com.hdu.autowire.Cat ##问题分析与解决 这个就好办了。这个错误实在是可笑,因为那一部分xml配置文件直接复制的,然而别人的包位置,与我自己写的包的位置不一样,所以就冲突了。修改之后,问题就解决了。 ----------------0-----------0------------------ ----------------0-----------0------------------

  1. ##问题场景描述四: 提示信息是junit.jar版本较低,所以我给更换了一个较高版本的测试工具。可是昨天晚上采取了两个操作,在Referenced Libraries里添加了一个新版包,可是,同时我还添加了一个 JUnit4的包,所以,现在我要删除一个,做个对比测试。 ##测试结果记录

    1.删除Referenced Libraries中的单元测试包,保留JUnit4包组件,代码能正常运行。

    2.两者共存时,能正常运行。

    3.删除自带的JUnit4组件包,使用自己下载的包,代码报错,大致信息是说找不到匹配的测试,原报错信息如下:java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=cdShouldNotBeNull], {ExactMatcher:fDisplayName=cdShouldNotBeNull(com.bert.chapter2.soundSystem.CDPlayerTest)], {LeadingIdentifierMatcher:fClassName=com.bert.chapter2.soundSystem.CDPlayerTest,fLeadingIdentifier=cdShouldNotBeNull]] from org.junit.internal.requests.ClassRequest@6737fd

    #个人总结:Eclipse自己找到的那个单元测试组件Junit4和Junit5就在我的计算机文件中,而且在这个组件中,附带了一个org.hamcrest.core_.1.3.0.jar的包,而我自己配置的包环境是没有这个附带包的。所以,有一个测试方向就是,把这个附带包加入到Referenced Lib 中,说不定就能使用自己下载的那个包了*。可是我现在不想做这个测试,目前的学习重点是Spring知识。 ----------------0-----------0------------------ ----------------0-----------0------------------

5.##问题场景描述五 **设置组件扫描的基础包时,包的名称书写错误,导致报错信息如下:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.bert.chapter2.soundSystem.CompactDisc' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:

##分析与解决过程 错误的写法: @ComponentScan(basePackages= {"soundSystem","Video"})

正确写法: @ComponentScan(basePackages= {"com.bert.chapter2.soundSystem","Video"})

第一个包位置精确到soundSystem,,,然而,我第一次只写了一个soundSystem字符串在那里,就像第二个“Video”包的名称一样。其实,我想表达的是,soundSystem就是类所在的包,可是这个注解解析时,应该是忽略了之前的com.bert.chapter2这些包的定义部分。如果能看到这个注解类的定义就好了。

----------------0-----------0------------------ ----------------0-----------0------------------

6.##问题场景描述六 Bean配置,为同一个对象绑定了两个@Primary首选bean,结果导致,spring迷糊了,不知道选择哪个作为bean返回了。具体报错如下: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.bert.chapter2.interfaces.Dessert' available: more than one 'primary' bean found among candidates: [getDessert, getSneak] ##解决措施 把那个@primary 注解只保留一个就好了,首选bean怎么可能有两个呢? ----------------0-----------0------------------ ----------------0-----------0------------------

7.##问题场景描述七 原报错信息: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut 大意是pointcut 切点生成错误。

##解决措施: 百度说法一是,Aspect.jar 包的版本有问题 初步调整,无效,等待第二次调整。加油。

方案二是,删掉那个@Pointcut注解,替换为相同功能的代码。 ----------------0-----------0------------------ ----------------0-----------0------------------

8.##问题场景描述八

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'trackCounterConfig': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position 67 execution(**com.bert.concert..interfaces.CompackDisc.playTrack(int)) && args(trackNum)

##报错升级

error at ::0 formal unbound in pointcut ----------------0-----------0------------------ ----------------0-----------0------------------

9.##问题场景描述九 *报错信息: The type javax.servlet.ServletContext cannot be resolved. It is indirectly referenced from required .class *解决方式 根据报错信息可以知道,这是缺了一个包。该包的位置在个人计算机的Tomcat /lib文件下,添加到buildPath即可。

<h3>这些报错信息原本是直接记录在文本文档中的,然后就被我直接拷贝到这里了,也许大家搜罗解决方案时,会看到我这篇小博客</h3>

猜你喜欢

转载自blog.csdn.net/qq_37040173/article/details/88949352