在JSP中调用不了javabean???(100分)

  • 主题发起人 主题发起人 段维
  • 开始时间 开始时间

段维

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是TomCat3.1
按照yysun老师的例子学习时,别的都没什么异常。
可是就是调用不了JavaBean,
具体情况是这样的:
我将hi_bean.jsp保存在
d:/tom/jakarta-tomcat/webapps/examples/jsp/tuorial
(d:/tom/jakarta-tomcat/ 是TomCat的安装路径)
将helloWorld.java 编译后将helloWorld.class复制到
d:/tom/jakarta-tomcat/webapps/examples/WEB-INF/jsp/beans/test
之后在浏览器中地址栏中键入
http://127.0.0.1:8080/examples/jsp/tutorial/hellouser/hi_bean.jsp
得到以下结果:
Location: /examples/jsp/tutorial/hellouser/hi_bean.jsp
Internal Servlet Error:
org.apache.jasper.JasperException: Unable to compile class for JSPD:/tom/jakarta-tomcat/work/localhost_8080%2Fexamples/_0002fjsp_0002ftutorial_0002fhellouser_0002fhi_0005fbean_0002ejsphi_0005fbean_jsp_1.java:63: Class test.helloWorld not found.
test.helloWorld helloBean = null;
^
D:/tom/jakarta-tomcat/work/localhost_8080%2Fexamples/_0002fjsp_0002ftutorial_0002fhellouser_0002fhi_0005fbean_0002ejsphi_0005fbean_jsp_1.java:66: Class test.helloWorld not found.
helloBean= (test.helloWorld)
^
D:/tom/jakarta-tomcat/work/localhost_8080%2Fexamples/_0002fjsp_0002ftutorial_0002fhellouser_0002fhi_0005fbean_0002ejsphi_0005fbean_jsp_1.java:71: Class test.helloWorld not found.
helloBean = (test.helloWorld) Beans.instantiate(getClassLoader(), "test.helloWorld");
^
3 errors
at org.apache.jasper.compiler.Compiler.compile(Compiler.java, Compiled Code)
at org.apache.jasper.runtime.JspServlet.loadJSP(JspServlet.java:413)
at org.apache.jasper.runtime.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:149)
at org.apache.jasper.runtime.JspServlet$JspServletWrapper.service(JspServlet.java:161)
at org.apache.jasper.runtime.JspServlet.serviceJspFile(JspServlet.java:261)
at org.apache.jasper.runtime.JspServlet.service(JspServlet.java, Compiled Code)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java, Compiled Code)
at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java, Compiled Code)
at java.lang.Thread.run(Thread.java:479)
怎么办啊!!!我试了别的调用JavaBean的例子也都不行。
 
haha,折腾了一下午,总算解决了。在这里总结一下,以免
后来者也象我一样走弯路。
1.TomCat 同 jswdk 的调用JavaBean缺省的的路径不同,
jswdk的路径如yysun老师所说,而TomCat在WEB-INF/classes 下。
2.在编译JavaBean时应当在使用时的路径下编译。
好了,这一下总算可以继续向前走了,要知道我可是被折磨了不少天了。
:)))
 
恭喜恭喜,大家共同进步.
 
你最好把bean放到单独的目录,这样不关用什么engine,都不会有问题
 
我是把bean放到jdk的bean目录中,这样也可以.
 
youroo,你是说这样的路径吗
c:/jdk1.2.2/demo/applets/animator/images/beans
我的jdk下只有这么一个bean路径
ahfei,如果放在一个单独的路径下,要怎么设置啊
 
如果需在其他目录下bean应注意拷贝web.xml文件
 
java bean可以放在classpath指向的任何地方。
 

to ahfei:

我把java bean的目录放进了classpath,但还是不行啊!

to 李兴平:

tomcat31下面有四个web.xml文件
admin/web_inf/web.xml
root/web_inf/web.xml
examples/web_inf/web.xml
test/web_inf/web.xml
它们大小不一,到底该拷那个?



 

在bean的目录下拷了examples下的web.xml,重起tomcat,依然无法
调用javabean.未调用javabean的jsp文件则运行正常.
我把javabean的文件拷到段维所说的WEB-INF/classes目录下,还是
无法调用javabean.
晕.....倒.....!
 
调用javabean成功! 环境:win98+tomcat3.1+jdk1.3
注意事项:
1.必须将javabean所在的目录加入classpath中
2.倘若一个javabean如下:
package test;
import java.beans.*;
public class helloWorld
{
public String name = "My first bean";
public String getHi()
{
return "Hello from " + name;
}
}
注意,这里有一个package test语句
因此,还应在该javabean所在的目录下创建一个test目录,将.class
文件拷到相应的目录下.否则,tomcat会找不到这个类文件,也就无法
调用这个bean.

被这个问题困挠了好多天,终于解决了.心情真好! 8-)
 
yysun老师的helloworld.java为什么我连编译都无法通过?
提示错误:
helloworld是公共的(public),应该在helloworld.java的文件中被申明
 
我的问题解决了,是我自己犯了个低级错误,希望没有浪费大家的时间
 
多人接受答案了。
 
后退
顶部