【问题标题】:Maven solve dependcy issueMaven解决依赖问题
【发布时间】:2019-06-07 19:48:36
【问题描述】:

我做了一个项目,想用它创建一个罐子。构建工件后,我得到以下异常:

java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/Module java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.Module

这是我在 pom.xml 中的依赖项:

<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.9.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/kernel -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>kernel</artifactId>
        <version>7.1.4</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/forms -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>forms</artifactId>
        <version>7.1.4</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/pdftest -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>pdftest</artifactId>
        <version>7.1.4</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/pdfa -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>pdfa</artifactId>
        <version>7.1.4</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.jfoenix/jfoenix -->
    <dependency>
        <groupId>com.jfoenix</groupId>
        <artifactId>jfoenix</artifactId>
        <version>9.0.8</version>
    </dependency>

</dependencies>

这是我迄今为止尝试过的:
1.我使用enforcer插件在我的依赖中查找版本冲突
2.我展示了maven依赖树图,解决了intellij中红线显示的冲突或不满足的依赖关系。图表现在看起来像这样:
依赖树图:

我在 pom.xml 中做错了什么或解决了异常问题吗?

编辑:mvn 依赖的输出:树

 --- maven-dependency-plugin:2.8:tree (default-cli) @ medium-software ---
[INFO] mediumSoftware:medium-software:jar:1.0-SNAPSHOT
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.9.8:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson- 
annotations:jar:2.9.0:compile
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype- 
jsr310:jar:2.9.8:compile
[INFO] +- com.itextpdf:kernel:jar:7.1.4:compile
[INFO] |  +- com.itextpdf:io:jar:7.1.4:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.13:compile
[INFO] +- com.itextpdf:forms:jar:7.1.4:compile
[INFO] |  \- com.itextpdf:layout:jar:7.1.4:compile
[INFO] +- com.itextpdf:pdftest:jar:7.1.4:test
[INFO] |  +- ch.qos.logback:logback-classic:jar:1.1.3:test
[INFO] |  |  \- ch.qos.logback:logback-core:jar:1.1.3:test
[INFO] |  \- junit:junit:jar:4.12:test
[INFO] |     \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- com.itextpdf:pdfa:jar:7.1.4:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.25:test
[INFO] |  \- log4j:log4j:jar:1.2.17:test
[INFO] \- com.jfoenix:jfoenix:jar:9.0.8:compile
[INFO] ------------------------------------------------------------------- 
-----
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------- 
-----
[INFO] Total time: 1.912 s
[INFO] Finished at: 2019-01-13T17:59:48+01:00
[INFO] Final Memory: 11M/47M
[INFO] ------------------------------------------------------------------- 
-----
Process finished with exit code 0

编辑:完全例外:

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:473)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:372)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:941)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:973)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:198)
    at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/Module
    at controller.Helper.Meldungsgenerator.<init>(Meldungsgenerator.java:17)
    at view.Main.start(Main.java:23)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:919)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(PlatformImpl.java:449)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
... 1 more
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.Module
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 11 more
Exception running application view.Main

【问题讨论】:

  • 你能发布mvn dependency:tree 命令的输出吗?您很可能混淆了不同的 Jackson 版本。
  • @KarolDowbecki 我用输出更新了问题
  • 能否也添加完整的异常堆栈跟踪?
  • @KarolDowbecki 完成

标签: java maven jar dependencies


【解决方案1】:

你的 jackson-datatype-jsr310 已经有 jackson-core,databind 了。所以你可以在下面发表评论:

<!--<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.8</version>
        </dependency>

        &lt;!&ndash; https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind &ndash;&gt;
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>-->

并尝试构建它。当我尝试它时,我得到了依赖树。

[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-core:jar:2.9.8:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:compile
[INFO] +- com.itextpdf:kernel:jar:7.1.4:compile
[INFO] |  +- com.itextpdf:io:jar:7.1.4:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- com.itextpdf:forms:jar:7.1.4:compile
[INFO] |  \- com.itextpdf:layout:jar:7.1.4:compile
[INFO] +- com.itextpdf:pdftest:jar:7.1.4:test
[INFO] |  +- ch.qos.logback:logback-classic:jar:1.2.3:test
[INFO] |  |  \- ch.qos.logback:logback-core:jar:1.2.3:test
[INFO] |  \- junit:junit:jar:4.12:test
[INFO] |     \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- com.itextpdf:pdfa:jar:7.1.4:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.25:test
[INFO] |  \- log4j:log4j:jar:1.2.17:test
[INFO] \- com.jfoenix:jfoenix:jar:9.0.8:compile

或者您可以从 jackson-datatype-jsr310 中排除 jackson-databind

【讨论】:

    【解决方案2】:

    感谢大家的帮助。我的错是我将工件构建为 JavaFX 应用程序。我试图将它构建为一个普通的 jar 并且它工作......

    【讨论】:

      猜你喜欢
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2017-01-06
      相关资源
      最近更新 更多