java.lang.VerifyError:class org.codehaus.jackson.map.type.ArrayType重写final方法isAbstract。()Z

时间:2014-09-08 07:04:56

标签: 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.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抛出的重点。但是,对于这个案例,我该怎么做才能解决这个问题,这是未知的。

请帮帮我

2 个答案:

答案 0 :(得分:2)

您使用包含ArrayType的jar文件,该文件尝试覆盖声明为isAbstract()的方法final,这意味着它无法被覆盖,这使得字节码验证器抛出{{} 1}}除了。

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

VerifyError继承自ArrayType继承的org.codehaus.jackson.map.type.TypeBase

org.codehaus.jackson.type.JavaType是定义JavaType的地方。在旧版本中,它被声明为:

isAbstract()

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

final

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

您必须使用所有jar中的相同版本,然后这将起作用,您将不会得到此异常。例如,从工作的机器上复制所有依赖项(jar),并将包含适当版本​​的jar包含到另一台计算机中,在那里获得JavaType(其中包含其他旧版本的依赖项)。

或者只是从download page下载最新的杰克逊罐子并在任何地方使用它们。

答案 1 :(得分:0)

对我来说,通过将Tomcat版本替换为7.0而不是6.0来解决问题 我刚刚将tomcat从另一台服务器复制到我遇到问题的服务器,之后一切都很顺利。有点奇怪: - /