程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java.lang.NoSuchMethodError:带有嵌入式码头并带有jsp支持的javax.servlet.jsp.tagext.TagAttributeInfo大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决java.lang.NoSuchMethodError:带有嵌入式码头并带有jsp支持的javax.servlet.jsp.tagext.TagAttributeInfo?

开发过程中遇到java.lang.NoSuchMethodError:带有嵌入式码头并带有jsp支持的javax.servlet.jsp.tagext.TagAttributeInfo的问题如何解决?下面主要结合日常开发的经验,给出你关于java.lang.NoSuchMethodError:带有嵌入式码头并带有jsp支持的javax.servlet.jsp.tagext.TagAttributeInfo的解决方法建议,希望对你解决java.lang.NoSuchMethodError:带有嵌入式码头并带有jsp支持的javax.servlet.jsp.tagext.TagAttributeInfo有所启发或帮助;

您有冲突的jar。

发行版中的文件lib/Jsp用于JsP的Glassfish实现。

Glassfish实施现在已被弃用(由于大量的错误且缺乏实施者的更新),在即将发布的Jetty 9.3版本中已将其完全删除。

不要在您的项目中包含这些Glassfish Implementation jar。

仅使用发行版lib/apache-Jsp/目录中的4个jar ,这是Apache Jasper JsP实现。

Apache Jasper JsP实施受到完全支持,稳定,最新,并拥有活跃而健康的社区和开发人员基础。

解决方法

根据在这里找到的指令,当类路径中存在jspjar时,嵌入式jetty无法解析web.xml,
我将以下启动代码放在一起,以嵌入式模式启动具有jsp支持的jetty,但仍然没有运气。我收到以下错误,下面提供了完整的堆栈:

java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZLjava/lang/String;ZZLjava/lang/String;Ljava/lang/String;)V

有问题的类javax.servlet.jsp.tagext.TagAttributeInfo在org.mortbay.jasper.apache-
jsp-8.0.9.M3.jar中定义。出于其他原因,也需要此jar来引入JasperInitializer类(JettyJasperInitializer的超类)。

我怀疑码头9.2.10.v20150310不建议使用jarorg.mortbay.jasper.apache-jsp-8.0.9.M3.jar。如果是这样,还有什么选择?我应该获得org.apache.jasper.servlet.JasperInitializer和javax.servlet.jsp.tagext.TagAttributeInfo吗?

java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String;ZLjava/lang/String;ZZLjava/lang/String;ZZLjava/lang/String;Ljava/lang/String;)V
at org.apache.tomcat.util.descriptor.tld.TldRuleSet$Attribute.toTagAttributeInfo(TldRuleSet.java:272)
at org.apache.tomcat.util.descriptor.tld.TldRuleSet$TagAttributeRule.end(TldRuleSet.java:150)
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:959)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLNSDTDValidator.endNamespaceScope(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1457)
at org.apache.tomcat.util.descriptor.tld.TldParser.parse(TldParser.java:76)
at org.apache.jasper.servlet.TldScanner.parseTld(TldScanner.java:257)
at org.apache.jasper.servlet.TldPreScanned.scanJars(TldPreScanned.java:46)
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:99)
at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:103)
at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:140)
at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:65)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:274)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
at org.eclipse.jetty.server.Server.start(Server.java:387)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
at org.eclipse.jetty.server.Server.doStart(Server.java:354)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at webappdev.JettyWebAppTest.init(JettyWebAppTest.java:140)
at webappdev.JettyWebAppTest.main(JettyWebAppTest.java:148)

我的启动代码:

 public static void main(String[] args) throws Exception
 {
    JettyWebAppTest thiss = new JettyWebAppTest();
    thiss.init();
 }


private void init() throws Exception {

    System.setProperty("java.io.tmpdir","/tmp/bolek");
    System.setProperty("org.apache.jasper.compiler.disablejsr199","false");
    Server server = new Server(8080);

    WebAppContext context = new WebAppContext();

    context.setResourceBase(<myresourcebase>);
    context.setDescriptor("/WEB-INF/web.xml");

    context.setContextPath("/");
    context.setParentLoaderPriority(false);
    context.setAttribute(
     "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",".*/[^/]*servlet-api-[^/]*\\.jar$|.*/javax.servlet.jsp.jstl-.*\\.jar$|.*/.*taglibs.*\\.jar$");


    context.setAttribute("javax.servlet.context.tempdir",System.getProperty("java.io.tmpdir"));

    context.setAttribute("org.eclipse.jetty.containerInitializers",this.jspInitializers());
    context.setAttribute(InstanceManager.class.getName(),new SimpleInstanceManager());
    context.addBean(new ServletContainerInitializersStarter(context),true);

    context.setClassLoader(this.getUrlClassLoader());

    context.addServlet(this.jspServletHolder(),"*.jsp");


    server.setHandler(context);

    server.start();
    server.join();      
 }


 private ServletHolder defaultServletHolder(URI baseUri)
{
    ServletHolder holderDefault = new ServletHolder("default",DefaultServlet.class);

    holderDefault.setInitParameter("resourceBase",baseUri.toASCIIString());
    holderDefault.setInitParameter("dirAllowed","true");
    return holderDefault;
}


 private List<ContainerInitializer> jspInitializers()
 {
    JettyJasperInitializer sci = new JettyJasperInitializer();
    ServletContainerInitializer scii;
    scii = (ServletContainerInitializer)sci;

    ContainerInitializer initializer = new ContainerInitializer(scii,null);
    List<ContainerInitializer> initializers = new ArrayList<ContainerInitializer>();
    initializers.add(initializer);
    return initializers;
 }


 private ClassLoader getUrlClassLoader()
 {
    ClassLoader jspClassLoader = new URLClassLoader(new URL[0],this.getClass().getClassLoader());
    return jspClassLoader;
 }




private ServletHolder jspServletHolder()
{
    ServletHolder holderJsp = new ServletHolder("jsp",JettyJspServlet.class);
    holderJsp.setInitOrder(0);
    holderJsp.setInitParameter("logVerbosityLevel","DEBUG");
    holderJsp.setInitParameter("fork","false");
    holderJsp.setInitParameter("xpoweredBy","false");
    holderJsp.setInitParameter("compilerTargetVM","1.7");
    holderJsp.setInitParameter("compilerSourceVM","1.7");
    holderJsp.setInitParameter("keepgenerated","true");
    return holderJsp;
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

大佬总结

以上是大佬教程为你收集整理的java.lang.NoSuchMethodError:带有嵌入式码头并带有jsp支持的javax.servlet.jsp.tagext.TagAttributeInfo全部内容,希望文章能够帮你解决java.lang.NoSuchMethodError:带有嵌入式码头并带有jsp支持的javax.servlet.jsp.tagext.TagAttributeInfo所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: