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