系统无法找到:mchange-commons-java-0.2.11

yi0zb3m4  于 2023-02-28  发布在  Java
关注(0)|答案(5)|浏览(190)

我有一个使用连接池的Sping Boot 项目,它在我的电脑上工作正常,但当我的同事从git中取出代码后,尝试运行时,它抛出了如下错误:

2018-02-28 14:49:24.527  WARN 11856 --- [ost-startStop-1] 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]

我还尝试为mchange-commons-java-0.2.11添加依赖项,但仍然不起作用:

<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>mchange-commons-java</artifactId>
    <version>0.2.11</version>
</dependency>

如果你面对过或有过这样的经历,请给我留下评论/想法。
您的意见或建议将不胜感激和欢迎!

wecizke3

wecizke31#

标准JarScannerjavadoc:
默认的JarScanner实现扫描WEB-INF/lib目录,然后扫描提供的类加载器,然后向上运行类加载器层次结构。此实现足以满足Servlet 3.0规范的要求并提供许多Tomcat特定的扩展。这些扩展包括:

  • 扫描类加载器层次结构(默认启用)测试所有文件以查看它们是否为JAR(默认禁用)
  • 测试所有目录以查看它们是否是分解的JAR(默认情况下禁用)
  • 所有扩展均可通过配置进行控制。

要禁止在启动时扫描该特定jar,您可以添加此特定于spring Boot 的属性:

server.tomcat.additional-tld-skip-patterns=*mchange-commons-java*.jar
35g0bw71

35g0bw712#

问题是c3p0 .jar文件的类路径错误:

bq9c1y66

bq9c1y663#

不知何故,您的spring Boot 可传递依赖项引用了错误的mchange-commons-java。从您的错误中,它正在搜索路径.m2\repository\com\mchange\c3p0\0.9.5.2\mchange-commons-java-0.2.11.jar。请参见突出显示的c3 p0。理想情况下,路径必须是com\mchange\mchange-commons-java\0.2.11\mchange-commons-java-0.2.11.jar。
mchange-commons-java依赖关系似乎发生冲突。
当你在eclipse或任何编辑器中打开pom.xml时,你会看到依赖关系层次结构,其中列出了所有可传递的依赖关系,看看c3 p0中是否有任何的mchange-commons-java,如果有,排除掉那个依赖关系,然后你显式声明的依赖关系mchange-commons-java dependency就可以工作了。

ogsagwnx

ogsagwnx4#

对于我来说,quartz库也通过c3po依赖项产生了冲突,但我刚刚将此属性值添加到JVM运行参数中,以便Tomcat跳过扫描不需要的jar文件:
-Dtomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
(if您可以将其添加到catalina.properties文件中,只需删除-D前缀即可)
如果需要jar扫描,可以只排除有问题的jar,而不是排除*.jar

ffx8fchx

ffx8fchx5#

我的问题是这样解决的,看看你能不能解决你的问题。问题解决方法https://my.oschina.net/antsdot/blog/1634440

相关问题