刚开始上手写 JSP + JavaBeans,习惯性地使用了 default package,结果发布到 Tomcat 5.5.17 之后,JSP 页面无论如何也找不到对应的 JavaBeans 类。同一个 Web App 打包成一个 .war,给朋友放在 resin 服务器上测试却完全没有问题。我在 JSP 页面中的脚本片断里(<% %> 中)显式调用 getClass().getClassLoader().loadClass( clazzname ) 加载我的 JavaBeans 类可以成功,但 JasperCompiler 就是无法找到这个类。
满世界的 Google,但是所有中文帖子都语焉不详。。后来在 Tomat 文档 FAQ 中看到 Class Not Found Issues 部分,发现有个说法是 JavaBeans 必须位于一个包中,顿时恍然大悟。修改我的 JavaBeans,测试,一切通过。
奇怪的是,这个貌似 Bug 的东西从 Tomcat 3 就存在,为什么到 5.5.17 还是没有改变呢?还是,根本没有打算去改变这个 Tomcat 特有的行为?