寻找的Class与程序同目录,却报NoClassDefFoundError

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class SAXandbeanQue {

    public static void main(String arg[]) throws ParserConfigurationException, SAXException, IOException {
    SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser parser = factory.newSAXParser();      
        XMLReader reader = parser.getXMLReader();
        BeanListHandler1    handler = new BeanListHandler1();   
        reader.setContentHandler(handler);
        reader.parse("E://hedwig//lomboz//javaweb30//1.xml");
        List<BookBean> list = handler.getList();    //必须用设置在读取器中的CONTENTHANDLER的list
        System.out.print(list);
    }
}

//把xml中的每本书都封装到一个book对象,并且把多个book对象都放在一个list集合中返回
 class BeanListHandler1 extends DefaultHandler {
    private List<BookBean> list = null;//选中List右键Source选择generate gettings and settings
    private BookBean bean = null;        
    private String element = null;      //用于标记标签名称

    public BeanListHandler1() {

    }
    @Override
    public void startElement(String uri, String localName, String name,
            Attributes attributes) throws SAXException {
        this.element = name;            //标签名称都暂存
        if("BOOKSHELF".equals(this.element)) list = new ArrayList<BookBean>();    
        else if("BOOK".equals(this.element)) bean = new BookBean();        //遇到标签BOOK即new bookbean


    }
    @Override     //右键source再overide/inplement
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        if("NAME".equals(element)) {             
            this.bean.setName( new String(ch,start,length));   //如果标签名为NAME,则将标签内容存放到bean.name
        }
        if("PRICE".equals(element)) {   //将element放equals前面,也会报空指针异常         
            this.bean.setPrice(new String(ch,start,length));
        }
        if("ID".equals(element)) {          
            this.bean.setID(new String(ch,start,length));
        }
        if("WRITER".equals(element)) {          
            this.bean.setWriter(new String(ch,start,length));
        }
        if("SERIES".equals(element)) {          
            this.bean.setSeries(new String(ch,start,length));
        }
    }

    @Override
    public void endElement(String uri, String localName, String name)
            throws SAXException {
        if("BOOK".equals(name)) {
            this.list.add(bean);
            bean = null;
        }                      //只有一个bookshelf,不能置空,否则什么都没
        /*else if("BOOKSHELF".equals(name)) {
            System.out.println(bean);
        }       */
        System.out.println(element);
        this.element = null;  //必须置空,因为读取文档空白部分会在调用character方法,而此时
        //element为上一个标签内容,会将空白作为char[] ch传递。当</BOOK>时,调用endElement,
        //使bean置空,之后遇到文档空白空白,调用character方法,而此时element为上一个标签SERIES,
        //会将空白作为char[] ch传递并调用bean的setSeries方法。bean此时为null,故报空指针异常。

    }
    public List<BookBean> getList() {     
        return this.list;
    }

}
Exception in thread "main" java.lang.NoClassDefFoundError: BookBean
    at BeanListHandler1.startElement(SAXandbeanQue.java:44)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1140)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:661)
    at SAXandbeanQue.main(SAXandbeanQue.java:24)
Caused by: java.lang.ClassNotFoundException: BookBean
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 12 more

这是BookBean

    private String name;
    private String price;
    private String id;
    private String writer;
    private String series;
    public BookBean() {

    }
    public BookBean(String name) {    
        this.name = name;
    }
    public void setName(String name) {     
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
    public void setPrice(String price) {
        this.price = price;
    }
    public String getPrice() {
        return this.price;
    }
    public void setID(String id) {
        this.id = id;
    }
    public String getID() {
        return this.id;
    }
    public void setWriter(String writer) {
        this.writer = writer;
    }
    public String getWriter() {
        return this.writer;
    }
    public void setSeries(String series) {
        this.series = series;
    }
    public String getSeries() {
        return this.series;
    }   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值