因为org.quartz-scheduler-quartz定时任务引入版本过高导致项目启动报错问题

具体错误信息

`o.a.tomcat.util.scan.StandardJarScanner  : Failed to scan [file:/C:/Users/ABC/.m2/repository/com/mchange/c3p0/0.9.5.2/mchange-commons-java-0.2.11.jar] from classloader hierarchy

java.io.FileNotFoundException: C:\Users\ABC.m2\repository\com\mchange\c3p0\0.9.5.2\mchange-commons-java-0.2.11.jar (The system cannot find the file specified) at java.util.zip.ZipFile.open(Native Method) ~[na:1.8.0_60] at java.util.zip.ZipFile.<init>(ZipFile.java:219) ~[na:1.8.0_60] at java.util.zip.ZipFile.<init>(ZipFile.java:149) ~[na:1.8.0_60] at java.util.jar.JarFile.<init>(JarFile.java:166) ~[na:1.8.0_60] at java.util.jar.JarFile.<init>(JarFile.java:130) ~[na:1.8.0_60] at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:60) ~[tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49) ~[tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:338) ~[tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:288) ~[tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) [tomcat-embed-jasper-8.5.23.jar:8.5.23] at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104) [tomcat-embed-jasper-8.5.23.jar:8.5.23] at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:101) [tomcat-embed-jasper-8.5.23.jar:8.5.23] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) [tomcat-embed-core-8.5.23.jar:8.5.23] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) [tomcat-embed-core-8.5.23.jar:8.5.23] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_60] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_60] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_60] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_60]`

项目移植

原有项目Spring+SpringMVC的普通的web项目移植到SpringBoot+Maven上来,这个过程最痛苦的莫过于寻找jar包的依赖了,在寻找jar包的依赖的时候,有一个jar出现了问题。

项目启动的时候错误信息

问题原因

底层系统 用的是org.quartz-scheduler-quartz1.6.2 我在maven仓库中没有找到,后来发现maven仓库中有2.3.0,就把版本号修改了,库中还有一个1.8.6但是看到不是新版本就没有使用。 就这样移植完成之后就进行启动项目了,因为项目中使用的数据库连接池是Durid,所以项目启动报错一个c3p0的jar包找不到,我很纳闷。

查找原因

我就使用 mvn dependency:tree //查看Maven包的依赖树 查出来是org.quartz-scheduler-quartz 2.3.0强依赖c3p0的两个jar包

!]

然后我就开始看项目中原来引入的版本,然后查看其它项目引入的版本,其它项目引入的确实1.8.6,这是个很奇怪的问题,然后我就反编译1.8.6发现,1.8.6却没有强依赖c3p0

解决问题

我就决定换为1.8.6,这样得需要修改下定时器配置文件中的一个类 2.3.0升级之后更换了,1.8.6和1.6.2是一样的,这样版本更换后就可以解决这个问题了。

最后说一下总结:

jar包的版本切不可随意更换,因为不了解新版本做了哪

猜你喜欢

转载自my.oschina.net/antsdot/blog/1634440
今日推荐