Java 类ClassFormatError:非本机方法中缺少代码属性

Java 类ClassFormatError:非本机方法中缺少代码属性,java,tomcat,Java,Tomcat,我让JSP项目在Tomcat6.0.32和Java6上运行,这突然引发了这个异常 java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file com/company/secure/Account java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defin

我让JSP项目在Tomcat6.0.32和Java6上运行,这突然引发了这个异常

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file com/company/secure/Account
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
java.lang.ClassLoader.defineClass(ClassLoader.java:615)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
java.lang.Class.getConstructor0(Class.java:2699)
java.lang.Class.newInstance0(Class.java:326)
java.lang.Class.newInstance(Class.java:308)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:150)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
filters.ObjectsCacheFilter.doFilter(ObjectsCacheFilter.java:43)
filters.FilterCach.doFilter(FilterCach.java:81)
filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:123)
注意,Apache Tomcat/6.0.32日志中提供了根本原因的完整堆栈跟踪。
ApacheTomcat/6.0.32

问题是由于您的webapp(在本例中是JSP框架)试图从仅API的JAR文件加载类

下面是问题的另一个示例(尽管可能针对不同的Java EE API):

说明:一些JavaEEAPI有两种形式;i、 e.2不同的JAR文件:

  • 特定于平台的表单包含所有方法的代码。这个JAR通常是web容器的一部分,默认情况下包含在每个web应用程序的有效类路径中

  • 仅API表单中的方法已删除其可执行代码。这个JAR是由Oracle提供的,它允许您独立于任何特定的JavaEE实现来编译JavaEE应用程序代码

问题很可能是您将这些仅API的JAR之一放在了webapp的运行时类路径上,并且它优先于特定于平台的JAR

考虑到这种情况“突然发生”,我怀疑您一直在更改项目的Maven依赖项,并且(意外地)将仅API的JAR文件设置为运行时依赖项,而不是仅编译时依赖项


解决方案:检查您的WEB应用程序的Maven(etc)依赖项,或者如果您手动管理依赖项,请检查您已将哪些JAR放入WEB应用程序的
WEB-INFO/lib
目录和WEB容器的共享库目录中。

问题是由于您的WEB应用程序(在本例中为JSP框架)试图从仅API的JAR文件加载类

下面是问题的另一个示例(尽管可能针对不同的Java EE API):

说明:一些JavaEEAPI有两种形式;i、 e.2不同的JAR文件:

  • 特定于平台的表单包含所有方法的代码。这个JAR通常是web容器的一部分,默认情况下包含在每个web应用程序的有效类路径中

  • 仅API表单中的方法已删除其可执行代码。这个JAR是由Oracle提供的,它允许您独立于任何特定的JavaEE实现来编译JavaEE应用程序代码

问题很可能是您将这些仅API的JAR之一放在了webapp的运行时类路径上,并且它优先于特定于平台的JAR

考虑到这种情况“突然发生”,我怀疑您一直在更改项目的Maven依赖项,并且(意外地)将仅API的JAR文件设置为运行时依赖项,而不是仅编译时依赖项


解决方案:检查您的WEB应用程序的Maven(etc)依赖项,或者如果您手动管理依赖项,请检查您已将哪些JAR放入WEB应用程序的
WEB-INFO/lib
目录和WEB容器的共享库目录中。

问题是由于您的WEB应用程序(在本例中为JSP框架)试图从仅API的JAR文件加载类

下面是问题的另一个示例(尽管可能针对不同的Java EE API):

说明:一些JavaEEAPI有两种形式;i、 e.2不同的JAR文件:

  • 特定于平台的表单包含所有方法的代码。这个JAR通常是web容器的一部分,默认情况下包含在每个web应用程序的有效类路径中

  • 仅API表单中的方法已删除其可执行代码。这个JAR是由Oracle提供的,它允许您独立于任何特定的JavaEE实现来编译JavaEE应用程序代码

问题很可能是您将这些仅API的JAR之一放在了webapp的运行时类路径上,并且它优先于特定于平台的JAR

考虑到这种情况“突然发生”,我怀疑您一直在更改项目的Maven依赖项,并且(意外地)将仅API的JAR文件设置为运行时依赖项,而不是仅编译时依赖项


解决方案:检查您的WEB应用程序的Maven(etc)依赖项,或者如果您手动管理依赖项,请检查您已将哪些JAR放入WEB应用程序的
WEB-INFO/lib
目录和WEB容器的共享库目录中。

问题是由于您的WEB应用程序(在本例中为JSP框架)试图从仅API的JAR文件加载类

下面是问题的另一个示例(尽管可能针对不同的Java EE API):

说明:一些JavaEEAPI有两种形式;i、 e.2不同的JAR文件:

  • 特定于平台的表单包含所有方法的代码。这个JAR通常是web容器的一部分,默认情况下包含在每个web应用程序的有效类路径中

  • 仅API表单中的方法已删除其可执行代码。这个JAR是由Oracle提供的,它允许您独立于任何特定的JavaEE实现来编译JavaEE应用程序代码

问题很可能是您将这些仅API的JAR之一放在了webapp的运行时类路径上,并且它优先于特定于平台的JAR

考虑到这种情况“突然发生”,我怀疑您一直在更改项目的Maven依赖项,并且(意外地)将仅API的JAR文件设置为运行时依赖项,而不是仅编译时依赖项

解决方案:检查您的webapp的Maven(etc)依赖项,或者如果您手动管理依赖项,请检查您在webapp的
WEB-IN中放入了哪些jar