Servlet:仅在load-on-startup

时间:2015-06-04 10:56:30

标签: java servlets tomcat7

在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,它就会运行。

2 个答案:

答案 0 :(得分:0)

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

Tomcat 6和7支持servlet 2.5标准。该标准包括通过ServletContextListener界面执行Web服务器引导操作的更好方法。

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 
    }
}

答案 1 :(得分:0)

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

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