【问题标题】:Servlet: Cannot instantiate javaURLContextFactory only if load-on-startupServlet:只有在启动时加载时才能实例化 javaURLContextFactory
【发布时间】:2015-06-04 10:56:29
【问题描述】:

在 Tomcat 7 (JDK 1.7) 中,我有一个 servlet,在启动时加载会返回此错误:

javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.naming.java.javaURLContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.naming.java.javaURLContextFactory]

但如果我从浏览器调用相同的 servlet,它就会运行。

【问题讨论】:

    标签: java servlets tomcat7


    【解决方案1】:

    错误发生在仅在启动时调用的 servlet init() 方法上。似乎您在类路径中缺少一个或多个 JAR 文件

    Tomcat 6 和 7 支持 servlet 2.5 标准。该标准包括通过ServletContextListener 接口执行 web-server-bootstrap 操作的更好方法。

    Tomcat 7 支持 servlet 3.0 标准,您可以在其中注释类以避免 web.xml 配置

    import javax.servlet.*;
    import javax.servlet.annotation.*;
    
    @WebListener
    public class BootstrapTheWebServer implements ServletContextListener {
    
        @Override
        public void contextInitialized(ServletContextEvent event)   {
            // invoked on web server start up 
            // event.getServletContext() to get servlet context
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent event) {
          // invoked on web server shutdown 
        }
    }
    

    【讨论】:

      【解决方案2】:

      尝试在您的类路径中添加以下依赖项:

      <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>tomcat-catalina</artifactId>
          <version>8.0.23</version>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多