我的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/