Java 使用jstl时,没有web.xml的嵌入式Tomcat引发异常

Java 使用jstl时,没有web.xml的嵌入式Tomcat引发异常,java,jsp,jstl,embedded-tomcat-7,Java,Jsp,Jstl,Embedded Tomcat 7,我有一个Swing应用程序,它启动一个嵌入式tomcat7服务器而不使用web.xml。我加载一个jsp,它使用jstl。当我访问jsp时,我的Swing应用程序中出现以下错误: 18.02.2014 22:32:54 org.apache.jasper.compiler.WebXml <init> WARNUNG: Internal Error: File /WEB-INF/web.xml not found 18.02.2014 22:32:54 org.apache.jaspe

我有一个Swing应用程序,它启动一个嵌入式tomcat7服务器而不使用web.xml。我加载一个jsp,它使用jstl。当我访问jsp时,我的Swing应用程序中出现以下错误:

18.02.2014 22:32:54 org.apache.jasper.compiler.WebXml <init>
WARNUNG: Internal Error: File /WEB-INF/web.xml not found
18.02.2014 22:32:54 org.apache.jasper.compiler.WebXml <init>
WARNUNG: Internal Error: File /WEB-INF/web.xml not found
18.02.2014 22:32:54 org.apache.catalina.core.ApplicationDispatcher invoke
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: The absolute uri: http://www.irquest.com/irq cannot be resolved in either web.xml or the jar files deployed with this application
这是在我将嵌入式tomcat5.5升级到tomcat7之后发生的。
我不明白为什么我会犯这样的错误。我遗漏了什么?

回答我自己的问题:

在摆弄JarScanner并阅读文档()之后,这对我来说很有用:

StandardJarScanner jarScanner = new StandardJarScanner();
jarScanner.setScanBootstrapClassPath(true);
jarScanner.setScanClassPath(true);
jqs3Context.setJarScanner(jarScanner);
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
Context jqs3context = null;
        try {
            jqs3context = tomcat.addWebapp("/" + servletContainerSettings.getServletContext(), servletContainerSettings.getHtdocsHome());
        } catch (ServletException e) {
            e.printStackTrace();
        }
        Wrapper wrapper = Tomcat.addServlet(jqs3context, "JQS3", servletContainerSettings.getServletClass());

        //[..] wrapper init params here [..]

        jqs3context.addServletMapping("/" + servletContainerSettings.getServletName() + "/*", "JQS3");
        jqs3context.setCrossContext(true);
        jqs3context.setLoader(new WebappLoader());
        jqs3context.setResources(new FileDirContext());
        jqs3context.getNamingResources().addResource(createDatabaseResource("jdbc/iradmindb"));
StandardJarScanner jarScanner = new StandardJarScanner();
jarScanner.setScanBootstrapClassPath(true);
jarScanner.setScanClassPath(true);
jqs3Context.setJarScanner(jarScanner);