Maven,Vert.x和JodaTime库 - NoSuchMethodError

时间:2014-09-09 09:58:35

标签: java maven jodatime vert.x

我有一个使用Vert.x库的maven项目 - http://vertx.io/(但我怀疑这有任何意义)。 当我尝试使用vert.x命令运行我的应用程序时:
vertx runzip target/service-1.0.0-mod.zip -conf config.json
我正在跟踪堆栈跟踪:

Exception in Java verticle 
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.mycompany.myproject.vertx.Verticle.createConfig(Verticle.java:116)
...
Caused by: java.lang.NoSuchMethodError: org.joda.time.format.DateTimeFormatter.withZoneUTC()Lorg/joda/time/format/DateTimeFormatter;
at com.mycompany.myproject.mypackage.dao.MyDAO.<clinit>(MyDAO.java:30)
...

JodaTime pom.xml的一部分:

<dependencies>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.3</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

我试过跑步:
mvn dependency:tree -Dverbose -Dincludes=joda-time
查看旧版本的JodaTime库是否作为依赖项加载但看起来都没问题:

[INFO] --- maven-dependency-plugin:2.7:tree (default-cli) @ matching-service ---
[INFO] com.mycompany.myproject:service:jar:1.0.0
[INFO] \- joda-time:joda-time:jar:2.3:compile

1 个答案:

答案 0 :(得分:1)

看起来您编译的MyDAO针对的是不同版本的JodaTime,而不是运行它时使用的版本。 即你的工作区中必须有两个不同的joda-time jar,MyDAO中的静态块调用withZoneUTC - 除非你只发布了一半的堆栈跟踪,问题是来自vertx项目的编译类。在这种情况下,您需要获取编译vertx的joda版本。