java.lang.VerifyError : class org. codehaus.jackson.map.type.ArrayType 覆盖 final方法 isAbstract.()Z

标签 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抛出的要点。但对于这种情况,我应该如何解决这个问题,尚不清楚。

请帮帮我

最佳答案

您使用一个包含 ArrayType 的 jar 文件,该文件尝试覆盖声明为 final 的方法 isAbstract(),这意味着它不能重写,这使得字节码 validator 抛出 VerifyError exceptin。

问题是您正在混合具有不同版本的 jar 。

ArrayType 继承自 org.codehaus.jackson.map.type.TypeBase,而 org.codehaus.jackson.map.type.TypeBase 又继承自 org.codehaus.jackson.type.JavaType .

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

public final boolean isAbstract() {
    Modifier.isAbstract(_class.getModifiers());
}

这是最终,正如您所看到的,这意味着您无法覆盖它。在后来的版本中,这被更改为

public boolean isAbstract() {
    Modifier.isAbstract(_class.getModifiers());
}

final 稍后(在更高版本中)已被删除,这允许子类覆盖此方法。您使用的 ArrayType 版本是在较新版本的 JavaType 上构建的,但您包含的 jar 是旧版本,这是不允许的。

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

或者直接从 download page 下载最新的 Jackson jars并在任何地方使用它们。

关于java.lang.VerifyError : class org. codehaus.jackson.map.type.ArrayType 覆盖 final方法 isAbstract.()Z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25718950/

相关文章:

php - 为什么 PHP 不为 json 文件返回正确的 mime?

android - VerifyError: Verifier denied class ... 'this' arg 必须初始化

java - hibernate-core 和 hibernate-annotation - 冲突

java - 从 Java 程序内部执行 jar 文件

java - 如何仅在引用实体时忽略 JSON?

java - 正则表达式用定界符拆分,同时保留定界符

c# - 使用 json 序列化(反)序列化多个对象时出现 Null 问题

android - 验证错误 Eclipse "warning: method is huge"

java - 如何将私钥和公钥(pvk、spc)和证书(cer)导入 keystore ?

java - Spring 中的属性范围