package test;
public class MyBean{
private String str;
private int num;
//初始化
public MyBean(){
str="This is the initial value.";
num=0;
}
//设置str
public void setvalue(String avalue){
str=avalue;
}
//得到str
public String getvalue() {
return str;
}
//设置number
public void setnumber(int Number)
{
num=Number;
}
//得到number
public int getnumber()
{
return num;
}
}
//这是调用bean的jsp文件名字:05_01.jsp
<html>
<head>
<title>一个简单的使用JavaBean的例子</title>
</head>
<%@page contentType="text/html; charset=gb2312"%>
<jsp:useBean id="mybean" class="test.MyBean" />
<body>
<h2>这是一个使用JavaBean的简单例子。</h2>
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
<h3>
<%=str2%>
</h3>
</body>
</html>
把test文件夹放在 网站文件目录/WEB-INF/classes/ 下和上面的05_01.jsp放到root目录下
输入地址http://localhost:8080/05_01.jsp出现如下的错误提示:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:550)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:136)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:307)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.ClassNotFoundException: org.apache.jsp._1._05_005f01_jsp
java.net.URLClassLoader$1.run(URLClassLoader.java:199)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(URLClassLoader.java:187)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:156)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:69)
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:548)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:136)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:307)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
这个程序是一光盘教程上的,应该没有什么错误吧,到底是什么地方错了,我调试了n次,都这样。
8 个解决方案
#1
Unable to load class for JSP 这个意思应该是找不到CLASS文件!
你可以不用把TEST目录也拷过来,就只要把生成的CLASS文件拷到WEB工程目录下的CLASS里(例:D:\TOMCAT5\webapps\你的工作名\web_inf\class\) 就行,直接调用<jsp:useBean id="mybean" class="MyBean" />。 再试试!
你可以不用把TEST目录也拷过来,就只要把生成的CLASS文件拷到WEB工程目录下的CLASS里(例:D:\TOMCAT5\webapps\你的工作名\web_inf\class\) 就行,直接调用<jsp:useBean id="mybean" class="MyBean" />。 再试试!
#2
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
----------------------
改成
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
代码好像没什么问题,不知道你的配置是否正确。
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
----------------------
改成
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
代码好像没什么问题,不知道你的配置是否正确。
#3
jsp页面和你自己写的类放在一个工程里,怎么jsp放在root下,而你的类文件放在其他的目录里
把jsp页面放在 网站文件目录/,再把整个“网站文件目录”全都拷到 ./tomcat/webapps/下,重启容器
或者设置虚拟目录,方法有两种
1,修改tomcat/conf/server.xml文件,在最后</host>之上增加
<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
其中path的值是虚拟目录
docbase若是以或盘符开始 则是你的硬盘目录的绝对路径。
2. 在conf/Catalina/localhost里面增加一个xml文件(文件名任意),内容为<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
把jsp页面放在 网站文件目录/,再把整个“网站文件目录”全都拷到 ./tomcat/webapps/下,重启容器
或者设置虚拟目录,方法有两种
1,修改tomcat/conf/server.xml文件,在最后</host>之上增加
<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
其中path的值是虚拟目录
docbase若是以或盘符开始 则是你的硬盘目录的绝对路径。
2. 在conf/Catalina/localhost里面增加一个xml文件(文件名任意),内容为<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
#4
我发现一件很奇怪的事情,CSDN很多人看不懂异常或者根本不看,直接上来就问
java.lang.ClassNotFoundException: 已经告诉你了问题所在,找不到类文件,那你就应该去看看路径的问题,这是最常见的异常了
java.lang.ClassNotFoundException: 已经告诉你了问题所在,找不到类文件,那你就应该去看看路径的问题,这是最常见的异常了
#5
顶一下楼上的,哈哈,没看仔细!的确,你把JSP放到ROOT里去了,那肯定找不到了!是应该放到你自己的网站文件目录下
#6
如果你的Bean没错的话,把调用文件改成:
//这是调用bean的jsp文件名字:05_01.jsp
<html>
<head>
<title>一个简单的使用JavaBean的例子</title>
</head>
<%@ page import="test.MyBean"%> //注意加上这一句,不可缺少。
<%@page contentType="text/html; charset=gb2312"%>
<jsp:useBean id="mybean" class="test.MyBean" />
<body>
<h2>这是一个使用JavaBean的简单例子。</h2>
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
<h3>
<%=str2%>
</h3>
</body>
</html>
//这是调用bean的jsp文件名字:05_01.jsp
<html>
<head>
<title>一个简单的使用JavaBean的例子</title>
</head>
<%@ page import="test.MyBean"%> //注意加上这一句,不可缺少。
<%@page contentType="text/html; charset=gb2312"%>
<jsp:useBean id="mybean" class="test.MyBean" />
<body>
<h2>这是一个使用JavaBean的简单例子。</h2>
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
<h3>
<%=str2%>
</h3>
</body>
</html>
#7
哦,对不住各位老大,我把错误代码付错了,应该是这个,不好意思!~
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:64: cannot resolve symbol
symbol : method setValue (java.lang.String)
location: class test.MyBean
mybean.setValue(str1);
^
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:65: cannot resolve symbol
symbol : method getValue ()
location: class test.MyBean
str2=mybean.getValue()+str2;
^
2 errors
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:64: cannot resolve symbol
symbol : method setValue (java.lang.String)
location: class test.MyBean
mybean.setValue(str1);
^
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:65: cannot resolve symbol
symbol : method getValue ()
location: class test.MyBean
str2=mybean.getValue()+str2;
^
2 errors
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28
#8
看看两个方法,getvalue/getValue.setvalue/setValue
BEAN中和.JSP中不一样。
BEAN中和.JSP中不一样。
#1
Unable to load class for JSP 这个意思应该是找不到CLASS文件!
你可以不用把TEST目录也拷过来,就只要把生成的CLASS文件拷到WEB工程目录下的CLASS里(例:D:\TOMCAT5\webapps\你的工作名\web_inf\class\) 就行,直接调用<jsp:useBean id="mybean" class="MyBean" />。 再试试!
你可以不用把TEST目录也拷过来,就只要把生成的CLASS文件拷到WEB工程目录下的CLASS里(例:D:\TOMCAT5\webapps\你的工作名\web_inf\class\) 就行,直接调用<jsp:useBean id="mybean" class="MyBean" />。 再试试!
#2
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
----------------------
改成
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
代码好像没什么问题,不知道你的配置是否正确。
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
----------------------
改成
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
代码好像没什么问题,不知道你的配置是否正确。
#3
jsp页面和你自己写的类放在一个工程里,怎么jsp放在root下,而你的类文件放在其他的目录里
把jsp页面放在 网站文件目录/,再把整个“网站文件目录”全都拷到 ./tomcat/webapps/下,重启容器
或者设置虚拟目录,方法有两种
1,修改tomcat/conf/server.xml文件,在最后</host>之上增加
<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
其中path的值是虚拟目录
docbase若是以或盘符开始 则是你的硬盘目录的绝对路径。
2. 在conf/Catalina/localhost里面增加一个xml文件(文件名任意),内容为<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
把jsp页面放在 网站文件目录/,再把整个“网站文件目录”全都拷到 ./tomcat/webapps/下,重启容器
或者设置虚拟目录,方法有两种
1,修改tomcat/conf/server.xml文件,在最后</host>之上增加
<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
其中path的值是虚拟目录
docbase若是以或盘符开始 则是你的硬盘目录的绝对路径。
2. 在conf/Catalina/localhost里面增加一个xml文件(文件名任意),内容为<Context path="/虚拟目录名" docBase="目标目录位置" debug="0" reloadable="true" > </Context>
#4
我发现一件很奇怪的事情,CSDN很多人看不懂异常或者根本不看,直接上来就问
java.lang.ClassNotFoundException: 已经告诉你了问题所在,找不到类文件,那你就应该去看看路径的问题,这是最常见的异常了
java.lang.ClassNotFoundException: 已经告诉你了问题所在,找不到类文件,那你就应该去看看路径的问题,这是最常见的异常了
#5
顶一下楼上的,哈哈,没看仔细!的确,你把JSP放到ROOT里去了,那肯定找不到了!是应该放到你自己的网站文件目录下
#6
如果你的Bean没错的话,把调用文件改成:
//这是调用bean的jsp文件名字:05_01.jsp
<html>
<head>
<title>一个简单的使用JavaBean的例子</title>
</head>
<%@ page import="test.MyBean"%> //注意加上这一句,不可缺少。
<%@page contentType="text/html; charset=gb2312"%>
<jsp:useBean id="mybean" class="test.MyBean" />
<body>
<h2>这是一个使用JavaBean的简单例子。</h2>
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
<h3>
<%=str2%>
</h3>
</body>
</html>
//这是调用bean的jsp文件名字:05_01.jsp
<html>
<head>
<title>一个简单的使用JavaBean的例子</title>
</head>
<%@ page import="test.MyBean"%> //注意加上这一句,不可缺少。
<%@page contentType="text/html; charset=gb2312"%>
<jsp:useBean id="mybean" class="test.MyBean" />
<body>
<h2>这是一个使用JavaBean的简单例子。</h2>
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
<h3>
<%=str2%>
</h3>
</body>
</html>
#7
哦,对不住各位老大,我把错误代码付错了,应该是这个,不好意思!~
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:64: cannot resolve symbol
symbol : method setValue (java.lang.String)
location: class test.MyBean
mybean.setValue(str1);
^
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:65: cannot resolve symbol
symbol : method getValue ()
location: class test.MyBean
str2=mybean.getValue()+str2;
^
2 errors
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:64: cannot resolve symbol
symbol : method setValue (java.lang.String)
location: class test.MyBean
mybean.setValue(str1);
^
An error occurred at line: 13 in the jsp file: /05_01.jsp
Generated servlet error:
E:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\_05_005f01_jsp.java:65: cannot resolve symbol
symbol : method getValue ()
location: class test.MyBean
str2=mybean.getValue()+str2;
^
2 errors
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28
#8
看看两个方法,getvalue/getValue.setvalue/setValue
BEAN中和.JSP中不一样。
BEAN中和.JSP中不一样。