gpt4 book ai didi

java - Maven 依赖引用旧的 Poi 版本

转载 作者:行者123 更新时间:2023-12-04 20:50:59 25 4
gpt4 key购买 nike

我在 POM 中使用 Apache Poi 3.8 版。但由于某些内部依赖性,它仍然(可能)与 poi-3.8 一起下载 poi-3.2。对我来说奇怪的行为是我的项目使用 poi-3.2,即使我在 POM 中提到了 3.8 版本。我用谷歌搜索了很多相同的东西,但发现自己不走运。这是我的 POM 条目:

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.8</version>
<type>jar</type>
</dependency>

我已经通过代码检查了我的项目在类路径中使用的 poi jar:

    ClassLoader classloader =
org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource(
"org/apache/poi/poifs/filesystem/POIFSFileSystem.class");
String path = res.getPath();
System.out.println("Core POI came from " + path);

这会打印:

Core POI came from file:/D:/Software/Softwares/apache-tomcat-6.0.33/webapps/scd-web/WEB-INF/lib/poi-3.2.jar!/org/apache/poi/poifs/filesystem/POIFSFileSystem.class

在同一文件夹中有一个 poi-3.8.jar,但类路径选择 3.2。

我的问题是:我应该怎么做才能使我的项目使用 poi-3.8.jar 而不是 poi-3.2.jar。

非常感谢!!

已编辑:mvn dependency:tree

的输出
 [INFO] Building SCD-common [INFO]    task-segment: [dependency:tree]
[INFO]
------------------------------------------------------------------------
[WARNING] While downloading xmlbeans:xmlbeans:2.3.0 This artifact has been relocated to org.apache.xmlbeans:xmlbeans:2.3.0.
[INFO] [dependency:tree] [INFO] com.idc:scd-common:jar:4.2.0.5
[INFO] +- org.springframework:spring-webmvc:jar:2.5.6:compile
[INFO] | +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | +- org.springframework:spring-beans:jar:2.5.6:compile
[INFO] | +- org.springframework:spring-context-support:jar:2.5.6:compile
[INFO] | \- org.springframework:spring-web:jar:2.5.6:compile
[INFO] +- com.idc.worldwide.keystones:service-single-signon-dynamo-api:jar:1.0:compile
[INFO] +- com.idc.worldwide.keystones:service-single-signon-dynamo-database-impl:jar:1.0.3:compile
[INFO] | +- org.apache:commons-dbcp:jar:1.2.2:compile
[INFO] | +- org.apache:commons-pool:jar:1.4:compile
[INFO] | \- com.idc.worldwide.webchannel:sage-core:jar:3.2.0.001:compile
[INFO] | +- com.idc.webchannel.legacy.sage-dependencies:aspose-slides:jar:1. 0:compile
[INFO] | +- com.servlets:cos:jar:09May2002:compile
[INFO] | +- com.sun:jai_codec:jar:1.1.3:compile
[INFO] | +- com.sun:jai_core:jar:1.1.3:compile
[INFO] | +- com.verity:k2:jar:5.00.3177.0:compile
[INFO] | +- org.apache:poi:jar:3.2:compile
[INFO] | +- org.apache:poi_contrib:jar:3.2:compile
[INFO] | +- org.apache:poi_scratchpad:jar:3.2:compile
[INFO] | \- org.springframework:spring:jar:2.5.6:compile
[INFO] +- org.springframework:spring-core:jar:3.0.5.RELEASE:compile
[INFO] | \- org.springframework:spring-asm:jar:3.0.5.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:3.0.5.RELEASE:compile

最佳答案

various mvn command帮助解决这个问题:

mvn 依赖:analyze-dep-mgt

将打印有关依赖项解析的详细信息。

mvn 依赖:树

将打印依赖树(非常有助于查看依赖项的依赖项)

mvn help:effective-pom

将打印由合并 pom 层次结构产生的 pom。

如果您在 maven 中找不到任何对 poi-3.2 的引用,您可以在您的 IDE 中查看您的类路径。你添加任何 jar 绕过 maven 吗?

使用这些命令的结果编辑您的问题对我们帮助您很有帮助。

关于java - Maven 依赖引用旧的 Poi 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14101015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com