为什么classes目录要放在WEB-INF目录下?

题,今天项目运行报错

...NoSuchBeanDefinitionException: No bean named ‘shiroFilter‘

异常交代的很清楚,web容器没有找到相应的bean。那么,查询后会从两个方面入手:

  1. 相应的xml配置文件有问题?
  2. 指定的bean没有发现?


然后逐一排查,和同事确认后排出第一个问题,因为同样的代码他的OK运行良好。重点就放到第二项问题了,顺着xml配置查找相应的类文件,都找到了。这下问题就头大了,配置好+文件都在,就是启动不了,难道是需要更换web容器(有同事这时候提到自己更换到tomcat7后解决过这种问题),在我更换的前一步,我在尝试了一次。

终  于

被我尝试成功,修改了java文件编译后的class文件存放目录classes。调整之前的目录配置在了和WEB-INF同级,调整为“../WEB-INF/classes”世界从此回复秩序,稳定运转中。O(∩_∩)O哈哈~

扩展阅读

为什么classes目录要放在WEB-INF目录下呢?

答:这里必须了解servlet的约定。拿题目中的问题来说,使用的是tomcat容器,它加载class文件的顺序是哪样的呢。

如果要用到某个类,则Web应用程序会到/WEB-INF/classes中试着载入类,若无,再试着从/WEB-INF/lib的JAR文件中寻找类文件(若还没有找到,则会到容器实现本身存放类或JAR的目录中寻找,但位置视实现厂商而有所不同,以Tomcat而言,搜寻的路径是Tomcat安装目录下的lib目录)。

所以,大家都知道为什么了吧。我们将classes目录和WEB-INF目录同级的时候,web容器根本找不到的。

时间: 2024-11-01 20:42:40

为什么classes目录要放在WEB-INF目录下?的相关文章

data目录迁移到web以外目录

官方帖子:http://bbs.dedecms.com/172474.html 帮助:http://help.dedecms.com/install-use/apply/2011/1110/2129.html CMS 系统数据目录位置,cms的系统数据目录是系统缓存和配置文件的目录,一般都有可以读写的权限,只要是能够写入的目录都可能存在安全隐患,很多站长甚至给予这个目录可执行的权限,更是非常危险 1.将data目录转移到非Web目录 2.修改DEDEDATA目录的配置常量 找到系统目录下/inc

Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)

一.linux服务器端配置 [[email protected] ~]# rpm -qa | grep sub subversion-libs-1.7.14-10.el7.x86_64 subversion-1.7.14-10.el7.x86_64 [[email protected] ~]# ps -ef | grep svn root      21019  20613  0 21:57 pts/0    00:00:00 grep --color=auto svn [[email prot

web应用目录结构

news web(应用的名字)||--静态资源和JSP文件都可以直接放在web应用的目录下,浏览器可以直接访问(html/jsp/css)|--WEB-INF 可以没有,但是最好有,一旦有,则结构需要完整,放在WEB-INF目录下的所有资源浏览器没有办法访问| |--classes 动态web资源运行时的class文件存放目录| |--lib 动态web资源运行时依赖的jar包| |--web.xml 整个web应用的配置文件,配置主页/servlet的映射/过滤器监听器的配置都依赖这个文件进行

JavaWeb的几个概念和TOMCAT目录结构以及WEB开发的目录结构

JavaWeb的几个概念和TOMCAT目录结构 一.JavaWeb应用的概念: 在Sun的Java Servlet规范中,对Java Web应用作了这样的定义:“Java Web应用由一组Servlet.HTML页.类.以及其它可以被绑定的资源构成.它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行” Java Web应用中可以包含如下内容: -- Servlet -- JSP -- 实用类 -- 静态文档如HTML.图片等 -- 描述Web应用的信息(web.xml) 二

web项目目录结构

在一个web项目中,一般都会有这两个文件相当于一个信息包,目录中的文件和目录获得Java2平台的认可与解释,用来配置应用程序.扩展程序.类加载器和服务 ,manifest.mf文件,在用jar打包时自动生成. WebweContent(WebRoot)/WEB-INF目录:工程会默认创建lib目录.web.xml文件.该目录下还存放生成的classes目录,标签配置文件.同时,该目录下的资源无法直接访问. WebweContent(WebRoot)/WEB-INF/classes目录:存放src

eclipse web项目目录结构

按照 Java EE 规范的规定,一个典型的 Web 应用程序有四个部分: 1.  公开目录 ; 2. WEB-INF/web.xml 文件,发布描述符(必选) ; 3. WEB-INF/classes 目录,编译后的 Java类文件(可选) ; 4. WEB-INF/lib 目录,Java类库文件(*.jar) (可选) ; 公开目录存放所有可以被用户的访问的资源, 包括  .html, .jsp, .gif, .jpg, .css, .js, .swf 等等. WEB-INF 目录是一个专用

JavaWeb学习之tomcat安装与运行、tomcat的目录结构、配置tomcat的管理用户、web项目目录、虚拟目录、虚拟主机(1)

1.tomcat安装与运行双击tomcat目录下的bin/startup.bat,启动之后,输入http://localhost:8080,出现安装成功的提示,表示安装tomcat成功 2.tomcat的目录结构* bin目录:存放tomcat的启动和终止脚本 * startup.bat 启动脚本 * bootstrap.jar,启动脚本最终执行的java程序 * org.apache.catalina.startup.Bootstrap * shutdown.bat 终止脚本 * conf目录

Java Web 项目目录规范

一.项目结构 这里和其他项目区别不大,我将模板抽离出来,更容易分析和理解: 解释一下:js主要包括extends(引入第三方的js).module(项目模块自己的js).lib(引用包,这里也可以继续拆分),module中包含具体的模块中的js.common.js是核心命名空间的js. 二.common.js 解释一下,Globals作为全局命名空间,各个模块均可以在此命名空间里定义域(如果有不明白的可以自学下命名空间,这个文件写死就行,也不用具体理解). 华东web项目工程规范 基于Java开

web工程目录结构

/WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/包含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中. /WEB-INF/lib/存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件. /WEB-INF/src/ 源码目录,按照包名结构放置各个java文件. /WEB-