引起原因:java.lang.ClassNotFoundException:org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer

时间:2019-08-06 21:11:35

标签: java spring hibernate spring-boot spring-mvc

尝试将旧应用转换为Spring Boot应用并出现上述错误。我已经看到了很多有关缺少依赖项的线程,但是我不确定是否丢失了一个(如果我确实确实缺少一个)?代码的任何其他部分都没有缺少库,但是我显然缺少了什么吗?还是第二次想到这可能是因为我导入了不必要的依赖项,从而使应用程序变得混乱,导致应用程序无法正常启动?

请参阅下面的gradle.build修订版代码片段,其中包含依赖项以及堆栈跟踪的修订版列表。

PT_LOAD
dependencies {
    compile group: 'javax.mail', name: 'mail', version:'1.4.1'
    compile group: 'com.google.code.gson', name: 'gson', version:'2.3'
    compile group: 'commons-codec', name: 'commons-codec', version:'20041127.091804'
    compile group: 'org.jsoup', name: 'jsoup', version:'1.7.2'
    compile group: 'commons-io', name: 'commons-io', version:'2.5'
    compile group: 'org.apache.commons', name: 'commons-lang3', version:'3.5'
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version:'4.3.5'
    compile group: 'org.json', name: 'json', version:'20140107'
    compile group: 'com.itextpdf.tool', name: 'xmlworker', version:'5.5.6'
    compile group: 'log4j', name: 'log4j', version:'1.2.17'
    compile group: 'org.quartz-scheduler', name: 'quartz', version:'2.2.1'
    compile group: 'org.quartz-scheduler', name: 'quartz-jobs', version:'2.2.1'
    compile group: 'org.springframework', name: 'spring-context-support', version:'3.1.3.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version:'3.1.0.RELEASE'
    compile group: 'org.springframework', name: 'spring-tx', version:'3.1.0.RELEASE'
    compile group: 'org.springframework', name: 'spring-jdbc', version:'4.0.6.RELEASE'
    compile group: 'c3p0', name: 'c3p0', version:'0.9.1.2'
    compile group: 'mssqlserver', name: 'sqljdbc4', version:'3.0'
    compile group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: '2.1.6.RELEASE', ext: 'pom'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.boot:spring-boot-starter-data-jpa'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile group: 'org.springframework', name: 'spring-orm', version: '2.5.1'
    compile group: 'org.springframework', name: 'spring-orm', version: '4.3.18.RELEASE'

}

2 个答案:

答案 0 :(得分:1)

您的依赖关系有点混乱。您具有已经由spring-boot-starter-*依赖关系管理的依赖关系。但是,您将覆盖来自不同Spring版本的那些具有手动org.springframework依赖项的文件。您正在混合2.5.1、3.1.0、3.1.3、4.0.6和4.1.3。混合来自任何框架的不同版本的jar是一个坏主意,因为它们通常不兼容。

要修复,请删除org.springframework依赖项,这些依赖项会干扰/破坏Spring Boot托管的依赖项。

接下来,您不需要spring-boot-gradle-plugin作为依赖项,并且最终javax.mail东西是spring-boot-starter-mail的一部分。 A

这将导致以下依赖项列表

dependencies {
    compile group: 'com.google.code.gson', name: 'gson', version:'2.3'
    compile group: 'commons-codec', name: 'commons-codec', version:'20041127.091804'
    compile group: 'org.jsoup', name: 'jsoup', version:'1.7.2'
    compile group: 'commons-io', name: 'commons-io', version:'2.5'
    compile group: 'org.apache.commons', name: 'commons-lang3', version:'3.5'
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version:'4.3.5'
    compile group: 'org.json', name: 'json', version:'20140107'
    compile group: 'com.itextpdf.tool', name: 'xmlworker', version:'5.5.6'
    compile group: 'log4j', name: 'log4j', version:'1.2.17'
    compile group: 'org.quartz-scheduler', name: 'quartz', version:'2.2.1'
    compile group: 'org.quartz-scheduler', name: 'quartz-jobs', version:'2.2.1'
    compile group: 'c3p0', name: 'c3p0', version:'0.9.1.2'
    compile group: 'mssqlserver', name: 'sqljdbc4', version:'3.0'

    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.boot:spring-boot-starter-data-jpa'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile 'org.springframework.boot:spring-boot-starter-mail'

}

注释

根据您使用的Spring Boot版本,您还可以对石英使用spring-boot-starter-quartz(或从依赖项中删除version元素)。

Spring Boot 2.x不支持log4j 1,因此您可能希望将其替换为logback(默认设置)或log4j2(使用spring-boot-starter-log4j2依赖项)。

我还建议使用默认的HikariCP替换C3P0(为您节省依赖关系,并且是更好的连接池)。

您还可以从GSON依赖项中删除version,因为Spring Boot也会对此进行管理(这样您就可以获得兼容的版本)。

答案 1 :(得分:0)

删除依赖项spring-webmvc。因为AsyncSupportConfigurer是从3.2开始存在的类。

实际上,您可以删除与org.springframework相关的依赖项。而且很安全。