小弟刚学jsp,在尝试用javabean的时候,发现一个奇怪的问题当我在java文件前面加了package语句的时候,jsp就能正常调用class文件,如果不加就会报错。
举个例子:
我在web-inf/classes/com/test/目录下建了bbb.java文件,这个文件前面不加package语句,编译好的class文件也放在这个目录下,然后我用在jsp中用<jsp:useBean id="Test" scope="session" class="com.test.bbb">调用他,tomcat运行时就会报错:
C:\tomcat 5.0\work\Catalina\localhost\ch9\org\apache\jsp\beantest_jsp.java:40: cannot access com.test.bbb
但是如果我在web-inf/classes/目录下建aaa.java文件,在它的前面加上package com.test;,编译好的class文件拷贝到web-inf/classes/com/test/目录下,在jsp中用<jsp:useBean id="TestJNI" scope="session" class="com.test.aaa">调用他,tomcat运行就会正常。
请问各位大哥大姐,是不是必须在java程序中加上package语句啊?

解决方案 »

  1.   

    你在classes中建目录,就会认为是包。你的类文件里没有建包,那么就会出错的。
      

  2.   

    加不加都行,不过如果有多个bean,最好加上以便区分和维护。
      

  3.   

    susu_0807(苏苏),为什么我不加的例子会出错了。
      

  4.   

    最好在里面加上,我也出现过这种情况,在CLASS文件中它会自动寻找。你不加包的,它不知道去哪找了!我的意见是一定要加,也为了区别其他的CLASS。
      

  5.   

    不加包的。话JSP怎么去识别BEAN 了
    还有BEAN 多了的话。真的很难管理和维护。。
      

  6.   

    楼上,文件名不能区别bean么?
      

  7.   

    你不加package 的话,这样调用。
    <jsp:useBean id="Test" scope="session" class="bbb">
      

  8.   

    先弄明白package到底是干啥用的啊,基础知识很重要的。
    同意xiongbing528((踩在编程高手的肩膀上成材)) 的观点,package的基本作用就是让相关调用的程序能找到这个BEAN的
      

  9.   

    这样调用就可以了<jsp:useBean id="Test" scope="session" class="bbb">你调用的是com.test.bbb,自然需要加pachage com.test了
      

  10.   

    直接放在classes,<jsp:useBean id="Test" scope="session" class="bbb">这样调用,不用pacKage 是不是可以?
      

  11.   

    同时我想问一下:一定要编译bbb.java好,并把bbb.class放到bbb.java里所写的package目录下,才能运行引入这个javabean的JSP页面吗??