1

当我在 Eclipse 中打包 Java“动态 Web 项目”以进行导出时,创建的 WAR 可以启动到服务器上,并且应用程序将正确加载。

但是,如果我尝试使用 Maven(w/ 和 w/o Jenkins)构建我的项目,构建将声称它成功但由此产生的战争以某种方式搞砸了,因为尝试加载我的应用程序会给我这个错误:

**HTTP Status 500 - exception**

org.apache.jasper.JasperException: java.lang.ClassCastException: 
  org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
.blah blah blah Stacktrace goes here blah blah....

java.lang.ClassCastException: org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor
. blah blah blah  Stacktrace goes here blah blah....

我读过这可能是由于服务器上的内容与我的 POM 中的内容之间的 Tomcat 版本不匹配造成的,但我确保两者都是 v6.0.26。

是否还有其他原因可能导致此问题 - 我的 POM、我的 Maven 配置或完全不同的其他原因?

4

1 回答 1

4

这肯定是版本不兼容造成的。您的服务器可能包含由 Maven 引入的不同版本的 jar,例如。服务器包含一个 commons-util-1.1.jar 并且您的 Maven 将 commons-util-1.2.jar 下载到您的 WEB-INF/lib/

尝试比较您的两个 WEB-INF/lib/ 目录(一个来自 eclipse,一个来自 maven)。

在谷歌搜索消息“DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor”可以帮助您找到导致问题的 jar 并专注于它(但它可能不是唯一的,一个 jar 可能隐藏另一个 jar :-))

我建议使用 TotalCommander ( http://www.ghisler.com/ ) 将目录与所有 sudirs 和文件进行比较,以直接了解一个命令的不同之处。(你也可以用它来搜索所有jar中的一个类)

最好的问候,Zied Hamdi - http://1vu.fr

于 2013-07-20T00:30:11.507 回答