Spring IOC---Bug处理

 

1. 

org.junit.platform.commons.JUnitException: TestEngine with ID 'junit jupiter' failed to discover tests

 

 解决:maven--clean、install

 

2. 无效的目标发行版:16

 

 解决:

 

再maven- install ,若问题仍旧没有解决

pom.xml 里修改一下,再install就好了

 

 再测试运行一下,问题1解决了,离成功不远了!!

 

 然后我直接debug运行了一下,就好了,有点子猝不及防

 

 

 

 3. java.lang.NoClassDefFoundError: service/MyBeanService

参考文章:怎么解决java.lang.NoClassDefFoundError错误

https://blog.csdn.net/jamesjxin/article/details/46606307

 

 

NoClassDefFoundError错误发生的原因

NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。与ClassNotFoundException的不同在于,这个错误发生只在运行时需要加载对应的类不成功,而不是编译时发生。很多Java开发者很容易在这里把这两个错误搞混。

简单总结就是,NoClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误。

 

 

4. log4j 报错

 

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.
————————————————

添上依赖:

 

 

首先将 log4j.properties 文件放到 resources 文件夹下

log4j.rootLogger=WARN, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n
log4j.logger.com.genuitec.eclipse.sqlexplorer=DEBUG
log4j.logger.org.apache=WARN
log4j.logger.org.hibernate=WARN

 

 

5. Spring抛java.lang.IllegalStateException: Cannot load configuration class异

解决方案:

将项目SDK从jdk_16换成jdk_1.8即可

 

 

6. 【Java】OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes…… 的解决方法

解决方法:在顶部栏里选择File → Settings… → 输入async+回车 → 把图中的勾选的去掉 → 保存

 

7. TestEngine with ID 'junit-vintage' failed to discover tests

 

 原因分析:

(1)maven 包冲突问题

(2)junit-vintage 是 Junit 4 中使用的引擎,如果你的项目使用了 Junit 5 的话,你需要在 spring-boot-starter-test 中将 JUnit 4 的引擎从测试中删除。

 

解决方法:

方法1:添加依赖

 

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.7.0</version>
    <scope>test</scope>
</dependency>

 结果:没用

方法2:删除方法1依赖后操作

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

 

 

8.org.springframework.context.support.ClassPathXmlAp和class path resource [src/applicationContext.xml]

见  https://blog.csdn.net/qq_45321679/article/details/108772764

原因可能是:

(1)maven依赖中pom.xml出现多个重名依赖的问题;
(2)maven依赖中pom.xml少了spring-context依赖的问题;
(3)applicationContext.xml中Bean的id重名问题;
(4)servlet的url-pattern名字少 / 的问题;
(5)在artifacts中,没有lib依赖和classes;
(6)spring版本跟jdk版本不兼容;
(7)发现是由于classpath不是指向resource路径,导致一直找不到文件。需要在classpath后面加个*,

<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:applicationContext.xml</param-value>
   </context-param>

 

posted @ 2022-02-23 17:27  OYそ  阅读(443)  评论(0编辑  收藏  举报