访问JSP页面时碰上了这个问题,网上说是由于没有包含父类导致的,但是我明明有把父类包含进来,还是不能编译,不知道怎么解决?大概代码如下:JSP页面
<%@ page contentType="text/HTML;charset=GB2312" %>
<%@ page import="test.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <% CHtmlElement abc = new CHtmlElement(); //如果把这后面的代码全部去掉就能正常访问,说明CHtmlElement是被正确包含的
CHtmlSelect select = new CHtmlSelect();
select.name = "SlectForm";
select.multiple = "";
String values[] = {"naying", "wanfei"};
select.values = values;
select.search = "na";
out.println(select); //出错提示行%>CHtmlElement.java
package test;public class CHtmlElement
{
public String toString()
{
return "<>";
}
}CHtmlSelect.java
package test;public class CHtmlSelect extends CHtmlElement
{
}CHtmlSelect.java CHtmlElement.java 是放在一起的,在JSP页面所在目录下的WEB-INF\classes\test下面两个类都编译成功并生成了相应的class文件
<%@ page contentType="text/HTML;charset=GB2312" %>
<%@ page import="test.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <% CHtmlElement abc = new CHtmlElement(); //如果把这后面的代码全部去掉就能正常访问,说明CHtmlElement是被正确包含的
CHtmlSelect select = new CHtmlSelect();
select.name = "SlectForm";
select.multiple = "";
String values[] = {"naying", "wanfei"};
select.values = values;
select.search = "na";
out.println(select); //出错提示行%>CHtmlElement.java
package test;public class CHtmlElement
{
public String toString()
{
return "<>";
}
}CHtmlSelect.java
package test;public class CHtmlSelect extends CHtmlElement
{
}CHtmlSelect.java CHtmlElement.java 是放在一起的,在JSP页面所在目录下的WEB-INF\classes\test下面两个类都编译成功并生成了相应的class文件
{
public String toString()
{
return "<>";
}
}
则能编译通过,但是运行时会提示NoClassDefFoundError: CHtmlSelect找不到CHtmlSelect,我已经尝试把CHtmlSelect类路径加到classpath里面并重启tomcat服务了,但还是报一样的错误更奇怪的是跟CHtmlSelect放在一起的CHtmlElement却不会出现问题
public class public class CHtmlSelect extends CHtmlElement
{
public CHtmlSelect(){}
}
CHtmlElement abc = new CHtmlElement();
CHtmlSelect select = new CHtmlSelect();
select.name = "SlectForm";
select.multiple = "";
String values[] = {"naying", "wanfei"};
select.values = values; select.search = "na";
out.println(select); //出错提示行
%>
不知道LZ是不是没有写这些name,values,multiple 属性,还是没有把这些属性给贴出来
{
public Object clone()
{
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException e) {
System.out.println("Catch Exception On CHtmlElement cloneing");
e.printStackTrace();
}
return o;
}
public static StringBuffer getProper(String member, String name)
{
StringBuffer str = new StringBuffer("");
if (member != null)
{
str.append(" " + name + "=\"");
str.append(member);
str.append("\"");
}
return str;
}
public String getHead()
{
return "";
}
public String getMid()
{
return "";
}
public String getEnd()
{
return "";
}
public String toString()
{
return getHead() + getMid() + getEnd() + "212";
}
public static void main (String argv[])
{
System.out.println("CHtmlElement");
}
}
package test;public class CHtmlSelect extends CHtmlElement
{
public String name = null; //name是此列表框的名字。
public String multiple = null; //multiple属性不用赋值,直接加入标志中即可使用,加入了此属性后列表框就成了可多选的了;
public String size = null; //size属性用来设置列表的高度,缺省时值为1
public String with = null; //宽度
public String [] values = null; //存列表项
public String search = null; //存匹配内存 public void SetSearch(String str)
{
search = str;
}
public void SetValues(String[] strarray)
{
values = strarray;
}
public String getHead()
{
StringBuffer str = new StringBuffer("");
str.append("<select");
str.append(getProper(name, "name"));
str.append(getProper(size, "size"));
str.append(getProper(with, "with"));
if (multiple != null)
str.append(" multiple");
str.append(">\n");
return str.toString();
}
public boolean AllReplace(StringBuffer source, String oldString, String newString)
{
int start = 0, end = 0;
while (true)
{
start = source.indexOf(oldString);
if (start == -1) break;
end = start + oldString.length();
source.replace(start, end, newString);
}
return true;
}
public String getMid()
{
StringBuffer str = new StringBuffer("");
String line = new String("\t<option value=\"?\">?\n");
if (values != null)
{
for (int i = 0; i < values.length; i++)
{
if (search == null || search == "" || find(values[i], search))
{
StringBuffer tmp = new StringBuffer(line);
AllReplace(tmp, "?", values[i]);
str.append(tmp);
}
}
}
return str.toString();
}
public String getEnd()
{
return "</select>\n";
}
public boolean find(String source, String str)
{
if (source.indexOf(str) != -1)
return true;
return false;
}
public CHtmlSelect()
{
}
public static void main (String argv[])
{
CHtmlSelect select = new CHtmlSelect();
select.name = "SlectForm";
select.multiple = "";
String values[] = {"naying", "wanfei"};
select.values = values;
select.search = "na";
System.out.println(select);
}
}
public class jwhich {/**
* 根据当前的classpath设置,
* 显示出包含指定类的类文件所在
* 位置的绝对路径
*
* @param className <类的名字>
*/
public static void which(String className) { if (!className.startsWith("/")) {
className = "/" + className;
} className = className.replace('.', '/');
className = className + ".class"; java.net.URL classUrl =
new jwhich().getClass().getResource(className); if (classUrl != null) {
System.out.println("\nClass '" + className +
"' found in \n'" + classUrl.getFile() + "'");
} else {
System.out.println("\nClass '" + className +
"' not found in \n'" +
System.getProperty("java.class.path") + "'");
}
} public static void main(String args[]) {
if (args.length > 0) {
jwhich.which(args[0]);
} else {
System.err.println("Usage: java jwhich ");
}
}
}
但是在jsp页面里面总是报执行时找不到类
现在干脆是找不到CHtmlSelect了 - -!