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