我在Netbeans 7.2.1中有Java EE应用程序。尝试部署它(构建结束OK),我在Tomcat日志中收到错误:
Caused by: javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:154)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)
at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:201)
at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:187)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1454)
查找导致此错误的代码,我发现了以下内容:
public Object lookup(String name) throws NamingException {
return getURLOrDefaultInitCtx(name).lookup(name);
}
这是如何引起的?如何解决?
答案 0 :(得分:9)
如果Tomcat因为某些原因在webapp的jsp-api.jar
中删除了servlet-api.jar
,catalina.jar
,/WEB-INF/lib
等任意特定于servlet容器的JAR,那么就会发生这种情况。 。您应该从那里删除所有特定于servletcontainer的JAR,它们不属于那里。另外,请确保这些JAR没有嵌套在WEB-INF/lib
内的其他JAR中。
这是一个常见的启动程序错误,以便“修复”应该以不同方式解决的JSP / Servlet库上的编译错误;即将IDE项目配置为与Netbeans中的“目标服务器”或Eclipse中的“目标运行时”相关联。然后,IDE将在编译期间自动包含服务器的库。