您的位置:首页 > 编程语言 > Java开发

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

2016-07-03 09:17 495 查看
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 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: