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

简介: 如题,今天项目运行报错...NoSuchBeanDefinitionException: No bean named 'shiroFilter'异常交代的很清楚,web容器没有找到相应的bean。

题,今天项目运行报错

...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哈哈~

wKioL1TULaGDYdi6AAFbLYDWdxc712.jpg

扩展阅读

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

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

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

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

目录
相关文章
|
8月前
|
Java 数据库
为什么WEB-INF目录是必须要有的?
为什么WEB-INF目录是必须要有的?
60 0
|
Java Android开发
eclipse编译发布WEB-INF没有class文件
eclipse编译发布WEB-INF没有class文件
eclipse编译发布WEB-INF没有class文件
|
安全 Java 应用服务中间件
WEB-INF 目录不能被客户端直接访问 | 学习笔记
快速学习 WEB-INF 目录不能被客户端直接访问,介绍了 WEB-INF 目录不能被客户端直接访问系统机制, 以及在实际应用过程中如何使用。
252 0
|
应用服务中间件 nginx
nginx配置web访问以及查看目录文件
nginx 配置web和文件目录结构
6297 0