2012-02-02 41 views
1

我在tomcat7收到以下错误javax.naming.NameNotFoundException在tomcat7

错误:

javax.naming.NameNotFoundException: Resource /WEB-INF/classes not found 
     at org.apache.naming.resources.BaseDirContext.listBindings(BaseDirContext.java:733) 
     at org.apache.naming.resources.ProxyDirContext.listBindings(ProxyDirContext.java:546) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1197) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:825) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:300) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:897) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:873) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 
     at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1095) 
     at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1617) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
     at java.lang.Thread.run(Thread.java:619) 

我按照server.xml文件中的条目访问内容(类和JSP文件)

<Host name="test" debug="0" appBase="path where classes and WEB-INF resides" 
       unpackWARs="false" autoDeploy="false"> 

       <Logger className="org.apache.catalina.logger.FileLogger" 
        prefix="om_log." suffix=".log" 
        timestamp="true"/> 

     <Context path="" docBase="path where classes and WEB-INF resides" debug="0" 
       reloadable="false" crossContext="false" /> 
     </Host> 
+0

我已经做了相同的搜索,但没有得到任何令人满意的错误原因。 – chetan 2012-02-02 10:33:48

+0

这个错误的可能原因是什么? – chetan 2012-02-02 10:42:43

回答

0

这意味着您的.war文件(以其压缩格式)不包含目录WEB-INF,该目录旨在为web-a提供元数据诸如例如web.xml。或者classes目录中的WEB-INF,其中包含您的web-app的可执行类(例如servlet代码)。

目录名称“WEB-INF”需要全部大写。如果你是在Windows上,这可能是因为您在小写键入它,但Windows的压缩工具显示它为大写)

+0

我通过在标记下输入server.xml来访问war内容,并且它在tomcat5中正常工作。 – chetan 2012-02-02 10:36:07

+0

请检查编辑的问题 – chetan 2012-02-02 10:45:27

+0

现在看起来它可能是一个初始化顺序的问题。因此在战争可以被访问之前被初始化。只是一个猜测。 – 2012-02-02 10:49:15

3

假设一个Web应用程序的结构

TestApp - >的WebContent - > WEB-INF
您可以如下所示设置docBase。

<Context path="/TestApp" docBase="C:/project/TestApp/webapp" debug="0" 
      reloadable="false" crossContext="false" /> 

appBase="webapps" 

仅当docBase设置为上下文名称时出现错误。

docBase="C:/project/TestApp"