Maven解决依赖问题

时间:2019-01-13 16:54:39

标签: java maven jar dependencies

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

  

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.我使用了执行器插件来查找我的依赖项中的版本冲突
2.我显示了maven依赖关系树图,并解决了intellij中红线显示的冲突或不满意的依赖关系。该图现在看起来像这样:
依赖树图:

enter image description here

在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

2 个答案:

答案 0 :(得分:0)

您的jackson-datatype-jsr310已经具有jackson-core,数据绑定在其中。因此,您可以在下面发表评论:

<!--<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

答案 1 :(得分:0)

谢谢大家的帮助。我的错是我将工件构建为JavaFX应用程序。我试图将其构建为普通的jar,并且可以正常工作...

相关问题