今天练习javabean的使用,出现错误如下:
Tomcat 报告 “The value for the useBean class attribute XXX is invalid” 这个错误可能源于以下几个原因:
csdn中找到了一个比较系统全面中文解答,本来在java的forum里也有回答,可是没有中文看的酣畅淋漓
1. 在编译 JSP 时,指定的 Bean 类没找到
2. Bean 虽然找到了,但是该类不是 public 的,或者找到的 class 文件是 interface 或抽象类
3. Bean 类中没有 public 的无参数构建函数
第二点很明显,不用多解释,最经常遇到的情况是 Bean 类忘了声明为 public 。
第三点中需要注意的是,如果你的 Bean 类没有提供任何构造函数,将自动生成一个默认构建函数,这没有问题。如果你有构造函数,则不会自动生成该默认构造函数。另外经常忽略的问题是写了默认构造函数却不是 public 的。
第 一点看起来简单,不过却最麻烦,尤其是在开发环境里。这里需要注意的是,“在编译 JSP 时”,这意味着引用 Bean 的 JSP 是新的,或者刚刚更新过, Tomcat 将自动(重新)编译该 JSP,此时如果发现 Bean 没找到,就会报这个错。但情况因为 JSP 或者 Bean 正在开发而变得复杂,这里不会一一列举所有情况,只举一些典型例子,具体情况需具体分析。如果 JSP 没变, Tomcat 不会重新编译 JSP,同时默认情况也不会自动重新加载更新过的 Bean 类(参考 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html 中的 reloadable),所以,你会发现即时删除了 Bean 类都没有问题,当然,更新 Bean 类也不会有什么用。如果在 JSP 编译产生之后,我们重起了服务器,由于 JSP 文件编译的结果存在(TOMCAT_HOME/work 中),所以,可以访问 JSP 页面。可是如果访问前,删掉了 Bean 类,就会报过 ClassNotFoundException 而不是上述错误。不同点在于 JSP 是否经过编译,没有编译则没有找到类报告题目中的编译错误,编译过则是 ClassNotFoundException。
解决第三个问题的最简单办法就是停止服务器,确认你的 JSP 和 Bean 正确部署(也可以启动后部署),清理掉 TOMCAT_HOME/work 中的内容,重起服务器。
按照上面的方法,检查了自己的配置,没什么问题,后来发现是书中引用javabean的类的时候,没有指明是哪一个bean
即<jsp:useBean id="girl" class="j6_01" scope="page"></jsp:useBean>
后来改为<jsp:useBean id="girl" class="Bean.j6_01" scope="page"></jsp:useBean>就可以了
但是还有一些自己大小写的错误,根据提示改正后终于能够运行了
java属性和表里字段不一致怎么注解
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
下一篇:Xshell怎么创建容器
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL 主从 AUTO_INCREMENT 不一致问题分析
本文介绍了MySQL5.7 中常见的replace into 操作造成的主从auto_increment不一致现象,一旦触发了主从切换,业务的正常插入操作会触发主键冲突的报错提示。
MySQL典型案例 replace into auto_increment -
C++打开NC数据得到与真实值不一致结果的解决方法
本文介绍基于C++语言的netCDF库读取.nc格式的栅格文件时,代码读取到的数据与栅格文件的实际数据不一致的解决方法~
C++ netCDF NC数据 栅格文件 数据读取 -
yarn add 和yarn区别
一、原 MapReduce 程序的流程 1. 首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管
yarn add 和yarn区别 hadoop yarn mapreduce 应用程序