2015-03-03 119 views
0

獲得例外低於上部署包含在JBoss服務器自定義標籤的Web應用程序:JBoss的7:ClassCastException異常:MyCustomTag不能轉換到javax.servlet.jsp.tagext.Tag

java.lang.ClassCastException: com.test.taglib.MyCustomTag cannot be cast to javax.servlet.jsp.tagext.Tag 
    at org.apache.jasper.runtime.PerThreadTagHandlerPool.get(PerThreadTagHandlerPool.java:96) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.jsp.WEB_002dINF.jsp.testAppData_jsp._jspx_meth_fx_005fsystemDate_005f0(testAppData_jsp.java:725) 
    at org.apache.jsp.WEB_002dINF.jsp.testAppData_jsp._jspService(testAppData_jsp.java:150) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:69) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:365) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:242) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:832) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:620) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:553) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:482) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) [org.springframework.web.servlet-3.0.7.RELEASE.jar:3.0.7.RELEASE] 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) [org.springframework.web.servlet-3.0.7.RELEASE.jar:3.0.7.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) [org.springframework.web.servlet-3.0.7.RELEASE.jar:3.0.7.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) [org.springframework.web.servlet-3.0.7.RELEASE.jar:3.0.7.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) [org.springframework.web.servlet-3.0.7.RELEASE.jar:3.0.7.RELEASE] 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) [org.springframework.web.servlet-3.0.7.RELEASE.jar:3.0.7.RELEASE] 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574) [org.springframework.web.servlet-3.0.7.RELEASE.jar:3.0.7.RELEASE] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] 

MyCustomTag類

public class MyCustomTag extends BodyTagSupport { 

    ... 
} 

MyCustomTag間接繼承標籤類:MyCustomTag - > BodyTagSupport - > BodyTag - >了IterationTag - >標籤

所有標籤類打包成JSP-AP I-2.1.jar並且它們被包括在module.xml,如下所示:

module.xml

<?xml version="1.0" encoding="UTF-8"?> 

<module xmlns="urn:jboss:module:1.1" name="com"> 
    <resources> 
     ... 
     <resource-root path="jsp-api-2.1.jar"/> 
     ... 
    </resources> 

    <dependencies> 
     <module name="sun.jdk"/> 
     <module name="javax.api"/> 
     <module name="javax.servlet.api"/> 
     <module name="org.jboss.logging"/> 
     <module name="org.jboss.modules"/> 
    </dependencies> 

</module> 

我搜索內部衝突的罐子的JBoss-EAP-6.3文件夾。但是,BodyTagSupport類僅存在於jsp-api-2.1.jar和jboss-jsp-api_2.2_spec-1.0.1.Final-redhat-2.jar中。而且兩個罐子都是兼容的。

然後,爲什麼我得到ClassCastException?

回答

0

它在module.xml文件中添加<module name="javax.servlet.jsp.api"/>依賴後,如下圖所示得到解決:

<?xml version="1.0" encoding="UTF-8"?> 

<module xmlns="urn:jboss:module:1.1" name="com"> 
    <resources> 
     ... 
     <resource-root path="jsp-api-2.1.jar"/> 
     ... 
    </resources> 

    <dependencies> 
     <module name="sun.jdk"/> 
     <module name="javax.api"/> 
     <module name="javax.servlet.api"/> 
     <module name="javax.servlet.jsp.api"/> 
     <module name="org.jboss.logging"/> 
     <module name="org.jboss.modules"/> 
    </dependencies> 

</module> 

不過,我不明白,什麼是需要添加javax.servlet.jsp.api的依賴,當jsp-api-2.1.jar在已添加模塊的資源根路徑。

相關問題