线程“main”中的异常java.lang.noClassDefFoundError org / jdom / input / SAXBuilder

时间:2009-08-13 03:25:16

标签: java

您好,这是Lonnie Ribordy,

我有一个我想写的程序,其中一部分使用名为JDom的第三方api, 当我编译我的程序时,它编译得非常好..但是,当我尝试运行它时,我在线程“main”获得异常java.lang.noClassDefFoundError org / jdom / input / SAXBuilder

我的程序如下......


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;

public class COS extends JPanel implements ActionListener{
    static JFrame f=new JFrame();
    Image bgImage=null;
    String message="";
    public COS(){
        try{
            String xml="background.xml";
            SAXBuilder builder=new SAXBuilder();
            Document doc=builder.build(new File(xml));
            Element root=null;
            Element img=null;
            String fimg=null;
            try{
                root=doc.getRootElement();
                img=root.getChild("bgimage");
                fimg=img.getText();
            } catch(Exception e){
            }
            getFileImage(fimg);
        } catch(Exception e){
            message="File load failed: "+e.getMessage();
        }
    }
    public void paintComponent(Graphics g){
        if(bgImage!=null){
            g.drawImage(bgImage,0,0,this);
        }
        else{
            g.drawString(message,40,40);
        }
    }
    public void getFileImage(String filein) throws IOException, InterruptedException{
        FileInputStream in=new FileInputStream(filein);
        byte[] b=new byte[in.available()];
        in.read(b);
        in.close();
        bgImage=Toolkit.getDefaultToolkit().createImage(b);
        MediaTracker mt=new MediaTracker(this);
        mt.addImage(bgImage,0);
        mt.waitForAll();
    }
    public void actionPerformed(ActionEvent e){

    }
    public static void main(String[] args){
        COS newcos=new COS();
        f.setSize(825,640);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().setLayout(null);
        newcos.setBounds(5,5,800,600);
        f.setLocation(10,5);
        f.getContentPane().add(newcos);
        f.setVisible(true);
    }
}

could anybody tell what's wrong?

2 个答案:

答案 0 :(得分:1)

我发现了我的问题,当我将JDom安装到我的java中时我忘了将它包含在jre lib / ext中

现在一切正常,就像它应该有效一样,非常感谢你花时间帮助我

答案 1 :(得分:0)

我认为问题是你的类路径中有一个旧版本的JDom,并且正在你想要的那个版本之前加载。

首先,确保在类路径中没有其他版本的JDom(除了你已下载的版本)。找出

的位置
  

org.jdom.input.SAXBuilder

正在从下载JWhich加载

类,并使用它来检查从何处加载类。

其次,如果你正在使用maven检查另一个版本的JDOM没有将它作为依赖项包含,那么使用mvn dependency:tree命令。