【问题标题】:java.lang.VerifyError: (class: org/apache/jasper/compiler/JspUtil, method: <clinit> signature: ()V) Incompatible argument to functionjava.lang.VerifyError: (class: org/apache/jasper/compiler/JspUtil, method: <clinit> signature: ()V) 函数参数不兼容
【发布时间】:2012-01-11 14:39:09
【问题描述】:

我正在创建一个应用程序,但出现如下所示的错误。

我正在使用 Tomcat 6.0 和 Spring 3.0。

SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.VerifyError: (class: org/apache/jasper/compiler/JspUtil, method: <clinit> signature: ()V) Incompatible argument to function
at org.apache.jasper.JspCompilationContext.getServletClassName(JspCompilationContext.java:371)
at org.apache.jasper.JspCompilationContext.getClassFileName(JspCompilationContext.java:511)
at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:445)
at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:392)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:582)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:636)

如果需要任何其他详细信息,请告诉我...

**注意:同一应用程序之前使用 Java EE 服务器运行。现在我把它改成了 Tomcat 而不是这个 Java EE 服务器。

提前致谢,如果我遗漏了什么,请告诉我。

【问题讨论】:

    标签: java spring-mvc


    【解决方案1】:

    这表明您的 webapp 的 /WEB-INF/lib 中有特定于 servlet 容器的库,例如 jsp-api.jar。这个不对。将它们全部删除。您的 webapp 的 /WEB-INF/lib 应该只包含特定于 webapp 本身的库,而不是目标服务器。目标服务器已经在其自己的/lib 文件夹中拥有这些库,它们应该保持不变,并且确保不会被复制/移动。

    /WEB-INF/lib 中错误地复制/放置特定于 servlet 容器的库是初学者很常见的错误,因为他们盲目地为他们在 IDE 中遇到的与 JSP/Servlet 相关的编译错误寻找解决方案/变通方法。

    另见:

    【讨论】:

    • 还是同样的错误... :( 下面是我在 WEB-INF/lib commons-logging-1.1.1, jasper, javaee, javax.el, jstl-1.1.2, junit-4.3.1, mysql-connector-java-5.0.5, org.springframework.asm-3.0.1.RELEASE-A, org.springframework.beans-3.0.1.RELEASE-A, org.springframework.context-3.0.1.RELEASE-A, org.springframework.core-3.0.1.RELEASE-A, org.springframework.expression-3.0.1.RELEASE-A, org.springframework.web.servlet-3.0.1.RELEASE-A, org.springframework.web-3.0.1.RELEASE-A, standard 中的 jar 文件
    • jasperjavax.eljavaee 是特定于容器的。也将它们删除。您的特定问题是由jasper 引起的。
    • 下面是我在tomcat lib文件夹annotations-api, catalina, catalina-ant, catalina-ha, catalina-tribes, el-api, jasper, jasper-el, jasper-jdt, jsp-api-2.1-6.0.2, servlet-api, tomcat-coyote, tomcat-dbcp, tomcat-i18n-es, tomcat-i18n-fr, tomcat-i18n-ja中的内容@
    • 你必须untouch Tomcat 库!切勿将这些库移动/复制到您的 Web 应用中。
    • 没有对 tomcat 库进行任何更改 :)
    【解决方案2】:

    java.lang.VerifyError 发生在您针对与运行时使用的 Jar 不同的 Jar 进行编译时。

    基于错误class: org/apache/jasper/compiler/JspUtil,Tomcat 可能有错误版本的 apache Jars(可能是旧/新版本)。请确保您在类路径中有正确的 Jar。

    【讨论】:

    • 意味着我应该保留apache-tomcat-6.0.26/lib.. 中的新的/更新的 jar 文件,对吗??
    • 请告诉我哪些 jar 文件需要更新... 下面是我在 /home/fparkar/Backup/temp/Spring-jar/ annotations-api, catalina, catalina-ant, catalina-ha, catalina-tribes, el-api, jasper, jasper-el, jasper-jdt, jsp-api-2.1-6.0.2, servlet-api, tomcat-coyote, tomcat-dbcp, tomcat-i18n-es, tomcat-i18n-fr, tomcat-i18n-ja 中的内容
    • 换句话说,您需要在项目设置中引用相同的 jar。
    • 表示WEB-INF/lib中的文件也应该在tomcatlib中?
    • 正如 BalusC 所说,从您的 WEB-INF 库中删除该文件。它应该可以解决问题。
    猜你喜欢
    • 2012-01-24
    • 2013-08-09
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多