【问题标题】:Couldn't understand managed version under Maven dependency hierarchy无法理解 Maven 依赖层次结构下的托管版本
【发布时间】:2020-09-27 19:02:30
【问题描述】:

在我的 pom.xml 中,我有一个 SikuliX Jar,它对 jna-platform 具有传递依赖。 如下图所示,4.5.2 版本已覆盖 5.4.0 版本。 但我不明白,这个版本是如何被覆盖的,因为我没有为 jna-platform 指定任何依赖项。我还验证了没有任何依赖项正在获取这个 jar。

请帮助我了解为什么会发生这种情况。任何详细的文件都非常感谢。

相关依赖:-

    <dependency>
        <groupId>com.sikulix</groupId>
        <artifactId>sikulixapi</artifactId>
        <version>2.0.4</version>
        <exclusions>
            <exclusion>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

谢谢

【问题讨论】:

  • 你能发布你所有的 pom.xml 吗?
  • 我不能,项目是商业的,不允许发布。但我已经发布了所有相关的依赖项。
  • 好的,然后看看相关的pom,你就会明白为什么会有那个版本管理或者看看有有效POM的标签,你会发现这两个版本
  • 仍然不相信,因为提到了 jna-platform 的 5.4.0 版本。为什么 4.5.2 会覆盖 5.4.0 版本。
  • 尝试清理你的项目并更新 maven,也许你只是缓存了另一个版本。作为最后一个测试添加 5.4.0 作为属性,以强制版本。也试试看here,好像有类似情况。

标签: java maven maven-2 dependency-management transitive-dependency


【解决方案1】:

由于您使用的是spring boot,因此建议here(这也是这种行为的原因):

java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/SspiUtil$ManagedSecBufferDesc #882

你可以改变你的依赖顺序,或者指定确切的版本,像这样:

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna-platform</artifactId>
    <version>5.4.0</version>
</dependency>

或添加此属性:

&lt;jna.version&gt;5.4.0&lt;/jna.version&gt;

【讨论】:

    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 2021-07-11
    • 2015-10-17
    • 2012-08-11
    • 1970-01-01
    • 2012-12-28
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多