2009-08-13 4 views
1

Hallo ist dieses Lonnie Ribordy,Exception in thread "main" java.lang.NoClassDefFoundError org/jdom/input/SAXBuilder

Ich habe ein Programm ich versuche zu schreiben, und ein Teil davon wird ein 3rd-Party-api genannt JDom, wenn ich mein Programm kompilieren die es kompiliert völlig in Ordnung .. aber, wenn ich versuche, es laufen zu lassen ich die Exception in thread bekommen „main“ java.lang.NoClassDefFoundError org/jdom/input/SAXBuilder

mein Programm ist wie folgt ...


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? 

Antwort

0

Ich glaube, das Problem ist, dass Sie h Ave eine alte Version von JDom in Ihrem Klassenpfad, und das geladen wird vor dem gewünschten.

Stellen Sie zuerst sicher, dass Sie keine andere Version von JDom (außer der, die Sie heruntergeladen haben) über Ihren Klassenpfad treten. Um herauszufinden, wo die

org.jdom.input.SAXBuilder

Klasse JWhich von Download geladen und verwendet zu prüfen, wo die Klasse von geladen wird.

Zweitens, wenn Sie Maven verwenden, überprüfen Sie, dass eine andere Version von JDOM es nicht als Abhängigkeit enthält, verwenden Sie dazu den Befehl mvn dependency:tree.

+0

was sind einige Parser, die ich suchen sollte? Ich weiß, dass Java einiges gebaut hat, aber JDom ist das erste, das ich selbst eingeschlossen habe, es ist JDom 1.1 von Jdoms binärer Seite .. und ich schreibe alle meine Sachen von Hand, also habe ich keinen Maven oder irgendetwas –

+0

Finden Sie heraus, welche JAR org. jdom.input.SAXBuilder wird von der ersten Instanz geladen ... – Jon

+0

Nun, anscheinend ist es nicht einmal gefunden .. Ich löschte alle jdom Gläser, um sie neu zu installieren, welche Gläser von JDom 1.1 setze ich in? ist es nur jdom.jar? oder muss das xerces.jar..etc enthalten? –

1

fand ich mein Problem heraus, wenn ich JDom in mein Java installiert ich es in der jre lib/ext wie es nur

und jetzt alles funktioniert nicht mit einberechnet wird funktionieren soll, danke für die Zeit sehr viel Sie haben mir geholfen, mir zu helfen

+0

Cool, aber das sollte in Ihrem Klassenpfad sein, und nicht in der JRE-Lib hinzugefügt/ext idealerweise ... siehe http://mindprod.com/jgloss/classpath.html – Jon

Verwandte Themen