尝试将旧应用转换为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'
}
答案 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
相关的依赖项。而且很安全。