Java EE异常:名称Java:comp在此上下文中未绑定

Java EE异常:名称Java:comp在此上下文中未绑定,java,tomcat,netbeans,jndi,Java,Tomcat,Netbeans,Jndi,我有Netbeans 7.2.1中的JavaEE应用程序。尝试部署它(构建结束正常),我在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.Nami

我有Netbeans 7.2.1中的JavaEE应用程序。尝试部署它(构建结束正常),我在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);
    }

这是如何造成的,我该如何解决它呢?

在Tomcat的情况下,如果您出于某种原因删除了webapp的
/WEB-INF/lib
中的任意servletcontainer特定jar,例如
jsp api.jar
ServletAPI.jar
catalina.jar
,等等,就会发生这种情况。您应该从那里删除所有特定于servletcontainer的JAR,因为它们不属于那里。另外,确保这些JAR没有嵌套在
WEB-INF/lib
中的其他JAR中


为了“修复”JSP/Servlet库上的编译错误,这是一个常见的初学者的错误,应该以不同的方式解决这些错误;也就是说,通过将IDE项目配置为与Netbeans中的“目标服务器”或Eclipse中的“目标运行时”相关联。IDE将在编译期间自动包含服务器的库。

在Tomcat的情况下,当您出于某种原因在webapp的
/WEB-INF/lib
中删除任意特定于servletcontainer的JAR时,会发生这种情况(这是一个常见的初学者“修复”编译错误的错误)。你这么做了吗?我使用ready应用程序,所以我可能是。嗯,好的。请用“是”或“否”确认。如果你完全不知道这些东西(没有经过一些理智的JSP/Servlet教程的准备就被扔进了深坑?),如果你只列出webapp的
/WEB-INF/lib
文件夹中当前存在的JAR,这会很有帮助。人们可以指出哪些根本不属于那里。是的,我查过了。我做到了,嗯,好的。你是在暗示你的具体问题现在已经解决了吗?谢谢你,巴卢斯克!我想报告我的经验,以便对其他人有用。在我的例子中,eclipse automatic maven resolver包含对tomcat的pom依赖项,因此这些自动的依赖项不能完全与eclipse tomcat服务器一起工作。