0

我的 ear 应用程序在本地窗口 PC 上的 Tomcat 6 上运行良好,但不能在同一台 PC 上的 Weblogic server 10.3.6 上运行。

Caused By: java.lang.VerifyError: (class: org/springframework/web/servlet/FrameworkServlet, method: processRequest signature: (Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V) Incompatible argument to function

        at java.lang.Class.getDeclaredFields0(Native Method)
        at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
        at java.lang.Class.getDeclaredFields(Class.java:1743)
        at weblogic.j2ee.dd.xml.BaseJ2eeAnnotationProcessor.getFields.....

以下是我的一部分pom.xml,可能与问题有关。

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>compile</scope>
</dependency>
4

1 回答 1

1

从您的 webapp/WEB-INF/lib文件夹中,删除所有 Tomcat 特定的库,例如el-ri.jar, el-api.jar. 这将使您的 webapp 与不同品牌/版本的容器不兼容,从而导致此类错误。

有关详细信息,请参阅此处的清晰说明

可能原因一:

java.lang.VerifyError当您针对与运行时使用的库不同的库进行编译时,可能会出现结果。

请参阅此处获取 java.lang.VerifyError 的原因

可能原因2:

如何在我的 Eclipse 项目中导入 javax.servlet API?

特意读了这一段

You should above all never manually copy/download/move/include the individual servletcontainer-specific libraries like servlet-api.jar, jsp-api.jar, el-api.jar, j2ee.jar, javaee.jar, etc. It would only lead to future portability, compatibility, classpath and maintainability troubles, because your webapp would not work when it's deployed to a servletcontainer of a different make/version than where those libraries are originally obtained from.

于 2013-11-12T10:49:48.760 回答