java - 函数参数不兼容

标签 java spring jakarta-ee servlets weblogic

我的ear应用程序在本地Windows PC上的Tomcat 6上运行良好,但无法在同一PC上的Weblogic服务器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>

最佳答案

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

有关更多信息,请参阅此处的清晰说明

可能原因1:

java.lang.VerifyError 可能是针对与运行时使用的库不同的库进行编译时的结果。

请参阅此处Causes of getting a java.lang.VerifyError

可能原因2:

How do I import the javax.servlet API in my Eclipse project?

特别读一下这一段

您首先应该永远不要手动复制/下载/移动/包含单个 servletcontainer 特定的库,例如 servlet-api.jar、jsp-api.jar、el-api.jar、j2ee.jar、javaee。这只会导致 future 的可移植性、兼容性、类路径和可维护性问题,因为当您的 web 应用程序部署到与最初获取这些库的版本/版本不同的 servlet 容器时,它将无法工作。

关于java - 函数参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19926785/

相关文章:

java - 我可以创建一个表现得像原始类型的类吗?

java - 仅使用 SAS token 连接到 Azure 存储帐户?

spring - 从父应用程序运行和关闭子上下文

java - 如何在环境变量中添加多个PATH值?

java - 你如何使@Resource 成为可选的?

java - StandardOutline 表未显示在 Eclipse Scout 的 GUI 中

java - 短信未发送

java - 没有属性的 getter 方法...错误

css - 拒绝应用样式,因为其 MIME 类型 ('application/json' 不受支持

java - 如何检测企业 Java 项目(Java + JSP + Javascript)中的无效代码?