java.lang.VerifyError:类org.codehaus.jackson.map.type.ArrayType重写最终的方法IsaStract。()Z

java.lang.VerifyError:类org.codehaus.jackson.map.type.ArrayType重写最终的方法IsaStract。()Z,java,json,verifyerror,Java,Json,Verifyerror,我在部署应用程序时遇到此错误 java.lang.VerifyError: class org.codehaus.jackson.map.type.ArrayType overrides final method isAbstract.()Z at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.se

我在部署应用程序时遇到此错误

java.lang.VerifyError: class org.codehaus.jackson.map.type.ArrayType overrides final method isAbstract.()Z
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2006)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1969)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1858)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1826)
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1812)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1306)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:896)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:322)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5103)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:932)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:379)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:324)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:621)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
有趣的是,相同的应用程序部署在另一台机器上并且运行良好。 这个怎么了?看到了很多问题,理解了问题/java抛出的要点。但是我应该怎么做才能解决这个问题呢?对于这个案例,我们还不知道


请帮我解决一下

您使用的jar文件包含
ArrayType
,该文件试图覆盖声明为
final
的方法
IsaStract()
,这意味着它无法被覆盖,这使得字节码验证器抛出一个
验证错误
例外

问题是您正在混合具有不同版本的罐子

ArrayType
继承自
org.codehaus.jackson.map.type.TypeBase
,后者继承自
org.codehaus.jackson.type.JavaType

JavaType
是定义
isastract()
的地方。在旧版本中,声明为:

public final boolean isAbstract() {
    Modifier.isAbstract(_class.getModifiers());
}
这是
最终版
,您可以看到这意味着您无法覆盖它。在更高版本中,此更改为

public boolean isAbstract() {
    Modifier.isAbstract(_class.getModifiers());
}
final
稍后已被删除(在更高版本中),这允许子类重写此方法。您使用的是基于较新版本的
JavaType
构建的
ArrayType
版本,但所包含的jar是旧版本,不允许这样做

您必须使用来自所有JAR的相同版本,然后这将起作用,您将不会得到此异常。例如,将所有依赖项(JAR)从正常工作且包含具有正确版本的JAR的计算机复制到另一台计算机,在该计算机上您可以获得
异常
(在该计算机上,您有其他较旧版本的依赖项)


或者只需从下载最新的Jackson JAR并随处使用即可。

对我来说,将Tomcat版本改为7.0而不是6.0就可以解决问题
我只是将tomcat从另一台服务器复制到我遇到问题的服务器上,然后一切正常。但是有点奇怪:-/

检查两台机器的Java版本。@Dmytro,它们是相同的。你在每台机器上分别构建应用程序吗?@Dmytro,没有。我们有共同的jenkins作业。你是否能够自己构建它,以查明jenkins作业是否存在bug?我同意你的看法。但是相同的应用程序在不同的机器上运行,并且具有相同的JDK版本。为什么它不在这台机器上运行?因为引用的类可能来自JAR,JAR是(web)应用程序的一部分,也可能是环境的一部分(例如JDK、类似Tomcat的servlet容器等)。如果引用的类是环境的一部分,那么它可能会从那里加载,而不是从应用程序加载,即使应用程序包含正确的版本。