Druid Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Hallo Forum, ich habe folgendes Problem. Ich habe mit Netbeans ein Programm geschrieben. Wenn ich es in Netbeans direkt ausführe funktioniert alles. Wenn ich eine .jar-Datei daraus mache und es mit java -jar Icors.jar ausführe kommt folgende NullPointerException-Meldung: java.lang.NullPointerException at javax.swing.ImageIcon.<init>(Unknown Source) at icors.Icors_main.initComponents(Icors_main.java:57) at icors.Icors_main.<init>(Icors_main.java:17) at icors.Icors_main$6.run(Icors_main.java:263) ... Also hat er was gegen: initComponents(); jInternalFrame1.setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/icors.jpg"))); und gegen new Icors_main().setVisible(true); Wenn ich das ganze mit javaw Icors.jar ausführe bekomme ich die Meldung, dass keine main-Class gefunden wurde, wobei definitiv eine main-class vorhanden ist. Anbei noch die Sources: Icors_main package icors; import javax.swing.UIManager; import java.sql.*; import java.lang.*; public class Icors_main extends javax.swing.JFrame { public Connection con_icors; /** Creates new form Icors_main */ public Icors_main() { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception E) { } initComponents(); } // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jInternalFrame1.setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/icors.jpg"))); jInternalFrame1.setVisible(true); jButton1.setText("Login"); jButton1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton1MouseClicked(evt); } }); jButton2.setText("Cancel"); jButton2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton2MouseClicked(evt); } }); jInternalFrame1.getContentPane().add(jButton2); jButton2.setBounds(10, 70, 67, 20); jInternalFrame1.setBounds(240, 180, 190, 120); desktopPane.add(jInternalFrame1, javax.swing.JLayeredPane.DEFAULT_LAYER); jLabel1.setFont(new java.awt.Font("MS Sans Serif", 0, 10)); jLabel1.setForeground(new java.awt.Color(0, 153, 0)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel1.setText("<html>Connection State:</html>"); jLabel1.setVerticalAlignment(javax.swing.SwingConstants.TOP); jLabel1.setVerticalTextPosition(javax.swing.SwingConstants.TOP); jLabel1.setBounds(0, 120, 350, 430); desktopPane.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER); jInternalFrame2.getContentPane().setLayout(null); jInternalFrame2.setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/icors.jpg"))); jInternalFrame2.addInternalFrameListener(new javax.swing.event.InternalFrameListener() { public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) { } public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) { } public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) { } public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) { } public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) { } public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) { } public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) { jInternalFrame2InternalFrameOpened(evt); } }); jLabel4.setFont(new java.awt.Font("MS Sans Serif", 1, 14)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel4.setText("<html>ICORS<br>International Commercial Order<br>and Reporting System</html>"); jLabel4.setVerticalAlignment(javax.swing.SwingConstants.TOP); jInternalFrame2.getContentPane().add(jLabel4); jLabel4.setBounds(160, 0, 230, 60); jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/logo.JPG"))); jInternalFrame2.getContentPane().add(jLabel5); jLabel5.setBounds(10, 10, 131, 195); jButton3.setText("Close DB"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jInternalFrame2.getContentPane().add(jButton3); jButton3.setBounds(350, 180, 80, 25); jInternalFrame2.getContentPane().add(jTextArea1); jTextArea1.setBounds(180, 67, 100, 140); jInternalFrame2.setBounds(130, 190, 450, 240); desktopPane.add(jInternalFrame2, javax.swing.JLayeredPane.DEFAULT_LAYER); getContentPane().add(desktopPane, java.awt.BorderLayout.CENTER); fileMenu.setText("File"); openMenuItem.setText("Open"); fileMenu.add(openMenuItem); saveMenuItem.setText("Save"); fileMenu.add(saveMenuItem); saveAsMenuItem.setText("Save As ..."); fileMenu.add(saveAsMenuItem); exitMenuItem.setText("Exit"); exitMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitMenuItemActionPerformed(evt); } }); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); editMenu.setText("Edit"); cutMenuItem.setText("Cut"); editMenu.add(cutMenuItem); copyMenuItem.setText("Copy"); editMenu.add(copyMenuItem); pasteMenuItem.setText("Paste"); editMenu.add(pasteMenuItem); deleteMenuItem.setText("Delete"); editMenu.add(deleteMenuItem); menuBar.add(editMenu); helpMenu.setText("Help"); contentMenuItem.setText("Contents"); helpMenu.add(contentMenuItem); aboutMenuItem.setText("About"); helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); setJMenuBar(menuBar); pack(); } // </editor-fold> private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Icors_main().setVisible(true); } }); } } so.. also ich sehe in diesen Dingern keine Fehler oder sonstiges, aber vielleicht bin ich auch nur blind. Wäre schön, wenn Ihr mir helfen könnt. Thx & Greetz Druid :cool: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 jInternalFrame1.setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/icors.jpg")));Da liegt der Fehler. Die icors.jpg ist nicht im Classpath verfügbar. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Druid Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 öhm. doch ist sie. ich habe den img-folder im classpath für build / test / run hinterlegt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 öhm. doch ist sie.Nein, ist sie nicht - sonst würdest du die Fehlermeldung, die du oben bekommst nicht erhalten. Mach in deinem Main-Programm mal einen Output auf die Konsole: System.err.println("Image-URL: " + this.getClass().getResource("/icors.jpg")); Steht da null? Mit Sicherheit ja - also ist das Bild nicht im Classpath. Steht da entgegen aller Erwartungen doch eine URL, dann melde dich nochtmal. ich habe den img-folder im classpath für build / test / run hinterlegt.Auch genau an der Stelle, wo Class#getResource() ihn erwartet? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Druid Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 hoi, also ich habe das Statement eingetippt und Netbeans nochmal durchorgeln lassen: Output: Image-URL: file:/C:/Dokumente%20und%20Einstellungen/saj6567/Icors/Icors/img/icors.jpg Also null ist es nicht... kann des sein, dass Java mit den Leerzeichen in Dokumente und Einstellungen ein Problem hat? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Also Fakt ist, dass deine Fehlermeldung nur dann auftritt, wenn das Bild im Classpath nicht vorhanden ist: java.lang.NullPointerException at javax.swing.ImageIcon.<init>(Unknown Source) at icors.Icors_main.initComponents(Icors_main.java:57) Du schreibst ausserdem: Wenn ich es in Netbeans direkt ausführe funktioniert alles. und also ich habe das Statement eingetippt und Netbeans nochmal durchorgeln lassen: Bringt nix, denn du hast ja oben schon geschrieben, dass von NetBeans intern alles funktioniert. Hast du es auch beim externen Start ausprobiert? Wenn nicht, dann los. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Druid Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 hab ich jetzt extern ausgeführt mit java -jar Icors.jar. Der kommt allerdings gar nicht an den Punkt wo er mir System.err.println("Image-URL: " + this.getClass().getResource("/icors.jpg")); ausgeben könnte. Er rennt schon vorher in ne NullPointerException rein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Er rennt schon vorher in ne NullPointerException rein.Und? Wo genau? Stacktrace? Code? Meine Glaskugel hat wegen zu großer Hitze eben ihren Geist aufgegeben. Mir wird das hier jetzt zu blöd... Wenn du Hilfe haben willst, dann poste aussagekräftige Fehlermeldungen und die dazugehörigen Code-Passagen (komplette Sourcen sind unnötig) und vor allem verstehe, was du eigentlich machst, und wieso welche Exception geschmissen wird: public class NullPointerException extends RuntimeException Thrown when an application attempts to use null in a case where an object is required. Also versuche schonmal selber zu checken, wieso das Objekt an genau dieser Stell null ist. Und am besten folgst du auchmal dem zweiten Link in meiner Signatur Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Druid Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 dann eben nicht. <sarkasmus anfang> es tut mir ja leid, dass ich nicht als Code-Guru auf die Welt gekommen bin und die Tastatur Tag und Nacht an meinen Fingern klebt. <sarkasmus ende> Erstens kann ich nirgends sehen, wo genau er in NullPointerException läuft. Zweitens habe ich die Fehlermeldung gepostet. Gleich am Anfang. Und die hat sich auch nicht geändert. Und da der erste Teil der Fehlermeldung in einen (unknown source) bei javax.swing.ImageIcon läuft, obwohl ein Objekt zurückgegeben wird kam mir das ganze spanisch vor. Und wenn das posten von ganzen Sources sinnlos ist verstehe ich nicht, wie du ein Verständnis für den Source entwickeln willst, aber egal.... Also hier werde ich auf jeden Fall nicht mehr posten... wenn alle so leicht eingeschnappt sind! Greetz Druid :cool: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Also mal ganz ruhig hier bleiben... Ist doch alles halb so wild. Also mit "getClass().getResource("icors.jpg")" bekommst du die Ressource. Aber auch nur, wenn sie wirklich mitsamt dem kompletten Pfad (also in der richtigen Ordnerstruktur) liegt! So, und da dein Package "icors" heißt, muss dein Icon auch im Ordner "icors" (innerhalb des Jars) liegen... Ach ja, Java hat ab und zu Probleme mit Leerzeichen. Deshalb hat die Package-Struktur ja auch keine Leerzeichen. So, nun pack dein Icon in das Icon.jar in den Ordner "icors" und rufe dein Java-Programm mit "java -cp .;Icors.jar;class-jar-archiv.jar icors.Icors_main" auf... Wenn du die Klassen und das Icon in ein und dem selben Jar hast, reicht auch ein "java -cp .;class-jar-archiv-mit-Bildern.jar icors.Icors_main"! So, nun probiere das mal... Grüße Peet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Druid Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 Danke... jetzt hat es funktioniert. Du hast mir wirklich weiter geholfen. Grüße Druid :cool: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peeter Geschrieben 20. Juni 2005 Teilen Geschrieben 20. Juni 2005 Ja... meine Glaskugel funktioniert noch! An was hat es denn nun gelegen? An der Ordnerstruktur? Edit: @Perdi Von wegen "ordentliche Fehlermeldung" und so... Wenn man den geposteten Quellcode sieht UND die Fehlermeldung hat (siehe erster Post), kann man auch ne ordentliche Antwort geben... Ich hab auch keine Glaskugel. Gerade bei dem Fehler ist es relativ einfach den eigentlichen Fehler einzugrenzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Druid Geschrieben 20. Juni 2005 Autor Teilen Geschrieben 20. Juni 2005 jo an der Ordnerstruktur. ich hab die Image-Dateien zwar in dem Ordner gelassen. Hab aber den kompletten Projektordner ins Root kopiert. und da hats dann geklappt. Warum auch immer.. Wahrscheinlich echt die Leerzeichen.. Danke nochmal für deine Hilfe.. deine Antworten versteht wenigstens auch ein Anfänger ;o) Greetz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.