有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

tomcat Java EE异常:Name Java:comp不在此上下文中绑定

我有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);
    }

这是怎么造成的,我该如何解决


共 (1) 个答案

  1. # 1 楼答案

    在Tomcat的情况下,当您出于某种原因在webapp的/WEB-INF/lib中丢弃任意特定于servletcontainer的JAR,例如jsp-api.jarservlet-api.jarcatalina.jar等时,就会发生这种情况。您应该从那里移除所有特定于servletcontainer的jar,它们不属于那里。另外,确保这些罐子没有嵌套在WEB-INF/lib内的其他罐子中

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