java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLja

来源:互联网 发布:客运站选址优化 编辑:程序博客网 时间:2024/05/20 04:51
java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZ)V
org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:576)
org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:401)
org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:162)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:423)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1556)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
com.paic.pafa.app.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:87)
com.paic.pafa.app.web.servlet.view.AbstractView.render(AbstractView.java:252)
com.paic.pafa.app.web.servlet.DispatcherServlet.render(DispatcherServlet.java:527)
com.paic.pafa.app.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:427)
com.paic.pafa.app.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:342)
com.paic.pafa.app.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:318)
javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
com.paic.pafa.app.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:73)
com.paic.pafa.app.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)

org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


我的程序是在window里是可以正常运行的,但是放到Linux部署ear包就报这种错误!

偶的环境是jboss +linux + jdk1.7 + eclipse 开发

期初参考人家:

java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo

java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZ)V
 org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:568)
 org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:401)
 org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248)
 org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:162)
 org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
 org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
 org.apache.jasper.compiler.Parser.parseElements(Parser.java:1539)
 org.apache.jasper.compiler.Parser.parse(Parser.java:126)
 org.apache.jasper.compiler.ParserController.doParse(ParserController.java:220)
 org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)
 org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:495)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:476)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:464)
 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

导致以上原因的是因为javax.servlet.jsp.tagext.TagAttributeInfo有冲突

当前classpath中有两个version的javax.servlet.jsp.tagext.TagAttributeInfo class,一个在servlet.jar另一个在jsp-api.jar中。 jsp-api.jar的那个是好用的,它只包含javax\servlet\jsp这个包,而servlet.jar中也包含它,同时包含servlet需要的关键包。所以在classpath中jsp-api.jar要比servlet.jar先被reference。

另外在jboss3.2.*之后的自己带的lib中已经将javax\servlet\jsp从servlet.jar中分开了,分别是javax.servlet.jar(jsp-api.jar)和javax.servlet.jsp.jar(serlvet-api.jar)


在项目中找到了javax.servlet.jar和javax.servlet.jsp.jar包纵观整互联网知道了是包冲突,删除了所有跟jsp和servlet的包,不管JDK还是jboss还是不行,最后我尝试删除项目里的javax.servlet.jar和javax.servlet.jsp.jar包 用 jsp-api.jar和serlvet-api.jar替换,结果OK了,出现这种问题要多试,原因目前还是不清楚!最可恶的是window里面可以Linux里报错


启发参考:http://blog.csdn.net/su_tata/article/details/8364406 


0 0
原创粉丝点击