The value for the useBean class attribute is invalid 问题
来源:百度文库 编辑:神马文学网 时间:2024/04/27 19:26:19
The value for the useBean class attribute is invalid 问题
Posted on 2007-12-05 22:47yiling 阅读(1341)评论(0) 编辑收藏网摘 所属分类:JAVA
这几天在调一个jsp的代码,要调用javabean,可是一直出问题,因为在代码中要调用jstl的标签,因此导入了jstl包,可是一调用jstl的东西就报错说tld文件未定义,于是找了很多书看,我配置的一点问题都没有啊,那是怎么回事呢?百度了好久,才找到答案,原来是jsp版本的问题,在jsp2.0以后的版本调用jstl的东西,要把<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 改为
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
现在可以使用jstl了,可是又出现了一个问题,就是不能通过usebean调用我的bean文件,找了很多资料都没用,后来发现自己犯了一个很低级的错误,我居然给javabean定义了一个带参数的构造函数,javabean的第一条就是不能定义带参数的构造函数!!!直接晕倒...
下面是其他可能造成题目上错误的原因
可见错误可能的原因包括:
1. 在编译 JSP 时(不是运行时),指定的 Bean 类没找到
2. Bean 虽然找到了,但是它不是 public 的,或者找到的 class 文件是 interface 或抽象类
3. Bean 类中没有 public 的默认构建函数
第二点很明显,不用多解释,最经常发生的情况是 Bean 类忘了声明为 public 。
第三点中需要注意的是,如果你的 Bean 类没有提供任何构造函数,将自动生成一个默认构建函数,这没有问题。但是,如果你有构造函数,则不会自动生成该默认构造函数。经常被忽略的问题是写了默认构造函数却不是 public 的。
第一点看起来简单,不过却最令人头痛,尤其是在开发环境里。这里需要注意的是,"在编译 JSP 时",意味着引用 Bean 的 JSP是新的,或者刚刚更新过,或者 TOMCAT_HOME/work 中的编译结果被清除了。此时,Tomcat 将自动(重新)编译该JSP,此时如果发现 Bean 没找到,就会报这个错。情况因为 JSP 或者 Bean类正在开发而变得复杂,一一列举所有情况没有意义,这里我举一些典型例子,借此应该可以举一反三:
如果 JSP 编译结果存在,且 JSP 没有更新,Tomcat 不会重新编译 JSP,同时默认情况也不会自动重新加载更新过的 Bean 类(参考http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html中的 reloadable)。所以,你会发现此时即使删除了 Bean 类都没有问题,当然,更新 Bean 类也不会有什么用。如果在 JSP编译产生之后,我们重起了服务器,由于 JSP 文件编译的结果存在,所以,可以仍然访问 JSP 页面,而不必重新编译。可是如果访问前,删掉了Bean 类,就会报过 ClassNotFoundException 而不是上述错误。关键在于 JSP是否经过编译,没有编译则没有找到类报告题目中的编译错误 ,编译过则是 ClassNotFoundException 运行时实例化错误。
还有一个更为特殊的例子。如果 Web 应用在启动时, WEB-INF/classes 目录不存在,则在启动应用后,新建 classes目录,动态添加新的类进去是没有用的,会报告同样的错误。原因是此时的 Tomcat不会去检查该目录,也就不会找到你需要的类。尽管这个问题的复杂场景可能不一而足,不过解决它的办法却很简单:停止服务器,确认你的 JSP 和Bean 正确部署,清理掉 TOMCAT_HOME/work 中的内容,重起服务器。 此外,配置动态类加载对开发而言是个不错的选择。
Posted on 2007-12-05 22:47yiling 阅读(1341)评论(0) 编辑收藏网摘 所属分类:JAVA
这几天在调一个jsp的代码,要调用javabean,可是一直出问题,因为在代码中要调用jstl的标签,因此导入了jstl包,可是一调用jstl的东西就报错说tld文件未定义,于是找了很多书看,我配置的一点问题都没有啊,那是怎么回事呢?百度了好久,才找到答案,原来是jsp版本的问题,在jsp2.0以后的版本调用jstl的东西,要把<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 改为
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
现在可以使用jstl了,可是又出现了一个问题,就是不能通过usebean调用我的bean文件,找了很多资料都没用,后来发现自己犯了一个很低级的错误,我居然给javabean定义了一个带参数的构造函数,javabean的第一条就是不能定义带参数的构造函数!!!直接晕倒...
下面是其他可能造成题目上错误的原因
可见错误可能的原因包括:
1. 在编译 JSP 时(不是运行时),指定的 Bean 类没找到
2. Bean 虽然找到了,但是它不是 public 的,或者找到的 class 文件是 interface 或抽象类
3. Bean 类中没有 public 的默认构建函数
第二点很明显,不用多解释,最经常发生的情况是 Bean 类忘了声明为 public 。
第三点中需要注意的是,如果你的 Bean 类没有提供任何构造函数,将自动生成一个默认构建函数,这没有问题。但是,如果你有构造函数,则不会自动生成该默认构造函数。经常被忽略的问题是写了默认构造函数却不是 public 的。
第一点看起来简单,不过却最令人头痛,尤其是在开发环境里。这里需要注意的是,"在编译 JSP 时",意味着引用 Bean 的 JSP是新的,或者刚刚更新过,或者 TOMCAT_HOME/work 中的编译结果被清除了。此时,Tomcat 将自动(重新)编译该JSP,此时如果发现 Bean 没找到,就会报这个错。情况因为 JSP 或者 Bean类正在开发而变得复杂,一一列举所有情况没有意义,这里我举一些典型例子,借此应该可以举一反三:
如果 JSP 编译结果存在,且 JSP 没有更新,Tomcat 不会重新编译 JSP,同时默认情况也不会自动重新加载更新过的 Bean 类(参考http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html中的 reloadable)。所以,你会发现此时即使删除了 Bean 类都没有问题,当然,更新 Bean 类也不会有什么用。如果在 JSP编译产生之后,我们重起了服务器,由于 JSP 文件编译的结果存在,所以,可以仍然访问 JSP 页面,而不必重新编译。可是如果访问前,删掉了Bean 类,就会报过 ClassNotFoundException 而不是上述错误。关键在于 JSP是否经过编译,没有编译则没有找到类报告题目中的编译错误 ,编译过则是 ClassNotFoundException 运行时实例化错误。
还有一个更为特殊的例子。如果 Web 应用在启动时, WEB-INF/classes 目录不存在,则在启动应用后,新建 classes目录,动态添加新的类进去是没有用的,会报告同样的错误。原因是此时的 Tomcat不会去检查该目录,也就不会找到你需要的类。尽管这个问题的复杂场景可能不一而足,不过解决它的办法却很简单:停止服务器,确认你的 JSP 和Bean 正确部署,清理掉 TOMCAT_HOME/work 中的内容,重起服务器。 此外,配置动态类加载对开发而言是个不错的选择。
The value for the useBean class attribute is invalid 问题
The value for the useBean class attribute is invalid 问题 - Yiling的眷眷 - 博客园
Who in the world is middle class? - ?Savings ...
[word of the day] The Word of the Day for September 24 is:
What is needed for effective learning on the Internet?
Is World Expo the symbol for China's Heyday ?
The Social Value of the College-Bred
We Should Value the Friendship
The Reason for the Seasons
《the quest for the rest》
in class和in the class
what is the sfl
where is the love?
Tender is the night
Life is the coffee
The Java Class File Format
Searching for the Future
pave the way for
Help for the Helper
Searching for the Future
for the first time
The Internet: Where the Money Is
Assessing the value of cooperation in Wikipedia
The value of multimedia in learning