【问题标题】:Java EE Exception: Name java:comp is not bound in this ContextJava EE 异常:名称 java:comp 未绑定在此上下文中
【发布时间】:2012-12-07 05:38:19
【问题描述】:

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

这是怎么引起的,我该如何解决?

【问题讨论】:

  • 如果您出于某种原因在 webapp 的/WEB-INF/lib 中删除了任意特定于 servletcontainer 的 JAR(这是初学者“修复”编译错误的常见错误),就会发生这种情况。你这样做了吗?
  • 我使用的是现成的应用程序,所以我可能会这样做。
  • 嗯好的。请用“是”或“否”确认。如果您对这些东西完全一无所知(在没有一些理智的 JSP/Servlet 教程准备的情况下被扔进深坑?),如果您只列出当前存在于 webapp 的 /WEB-INF/lib 文件夹中的 JAR,将会很有帮助。可以指出哪些根本不属于那里。
  • 是的,我已经检查过了。我做到了。
  • 嗯好的。你的意思是你的具体问题现在已经解决了吗?

标签: java tomcat netbeans jndi


【解决方案1】:

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

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

【讨论】:

  • 谢谢巴鲁斯克!我想报告我的经验,所以它可能对其他人有用。就我而言,eclipse 自动 maven 解析器包含对 tomcat 的 pom 依赖项,因此这些自动解析器并不完全适用于 Eclipse tomcat 服务器。
  • 在 pom.xml 中将容器提供的库标记为provided
猜你喜欢
  • 1970-01-01
  • 2022-06-30
  • 2014-04-28
  • 2012-03-10
  • 2011-09-22
  • 2012-02-09
  • 2016-12-08
  • 2018-09-12
  • 1970-01-01
相关资源
最近更新 更多