The value for the useBean class attribute XXX is invalid 异常解释

来源:互联网 发布:同花顺选股编程 编辑:程序博客网 时间:2024/06/05 08:11

普遍的答案有三个解释

1. 在编译 JSP 时,指定的 Bean 类没找到

2. Bean 虽然找到了,但是该类不是 public 的,或者找到的 class 文件是 interface 或抽象类
3. 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 中的内容,重起服务器。


------------------------------------------------------------------------------------------------

以上大部分都是我看教程而写的,我在写商城程序的时候,也遇到了这样的问题,将所有问题都排除后,依然有这个问题,因为去上课,所以就没有管他。回来之后电脑关机了,重新打开再去执行的时候发现已经没有问题了,说明重新加载项目还是比较有必要的。重启myeclipse这个方式还是有效,的。不过在重启之前需要确定没有代码问题了之后再去重启,关于这个可以看我的另一个教程


希望能够帮助到和我一样走在编程路上的小学生


javaBean入门使用详解/应用实例

http://blog.csdn.net/vv___/article/details/78466819




-------------------------------------------------------------------------------------------------

总之,细节真的可以影响大局,特别是在编程方面,一点小小的问题都可能造成巨大的影响,大到你都不会怀疑到出错的是那个本以为百分百正确的地方,

阅读全文
0 0
原创粉丝点击