Fehlermeldungen erscheinen erst in der Ausführung des Programms

SteveT

Mitglied
Hallo,

jedes Mal, wenn ich mein Programm starte kommt folgende Fehlermeldung in Eclipse:
Code:
Errors occurred during the build.
Errors running builder 'Java Builder' on project 'GuitarRecs'.
info cannot be null
Mein Code besteht aus drei Klassen, die zwangsläufig miteinander verknüpft sind. Mit dem Programm will ich ein Mikro verschieden oft aufnehmen. Die einzelnen Aufnahmen werden jeweils als Spur in einer Leiste abgespeichert.
Die erste Klasse ist quasi das Hauptinterface mit dem Frame, etc.:
Java:
package programm;
....
public class Tonstudio{
  
    JPanel mainpanel;
    ....

    void studiointerface(){
     ....
    }
}
Die Zweite Klasse liefert das Interface für die Spuren:
Java:
package programm;
....
public class SpurenInterface extends Tonstudio{


    JMenuBar[] audiobar = new JMenuBar[anz];
    ....

    void spinterface() {
    ....
    }

}
So die letzte Klasse enthält die ganzen ActionListener, sie ist das Problem.
Java:
package programm;
....
public class Actionclass extends SpurenInterface{

    AudioInputStream audiostream;
    ....
    public void clickhandler(){
    ...
    }
}
Erst nachdem ich das Programm starte erscheinen in der Klasse Fehlermeldungen in der drittten Klasse. In der ersten Zeile (package programm) erscheint die Fehlermeldung "Internal compiler error: java.lang.IllegalArgumentException: info cannot be null at org.eclipse.jdt.internal.compiler.codegen.StackMapFrame.addStackItem(StackMapFrame.java:81)". Die anderen Fehlermeldungen im Code sind meistens "Cannot make a static reference to the non-static field".
Ich bin echt total ratlos, vor allem, weil ich alle Fehlermeldungen vor ausführen des Codes korrigiert habe.
Danke schonmal im Vorraus für die Hilfe!
 

Thallius

Top Contributor
Und wir sollen jetzt raten was es sein könnte? Wie wäre es Du zeigst und mal den Code?

Weiterhin ist Dein Konzept Quatsch. Warum erbt SpurenInterface (Was auch immer das überhaupt sein soll) von Tonstudio. Ist eine Spur ein erweitertes Tonstudio? Bestimmt nicht. Eine Spur ist Bestandteil eines Aufnahmegerätes, welches wiederum Teil des Tonstudios ist. Aber nicht anders herum.

Gruß

Claus
 

SteveT

Mitglied
Raten nicht. Hätte ja sein können, dass man daran schon den Fehler sieht. Ich denke, dass es nicht an den einzelnen Befehlen im Code liegt, da selbst ohne Befehle wird die Klasse nicht kompiliert, da immer noch diese Exception da ist:
In der ersten Zeile (package programm) erscheint die Fehlermeldung "Internal compiler error: java.lang.IllegalArgumentException: info cannot be null at org.eclipse.jdt.internal.compiler.codegen.StackMapFrame.addStackItem(StackMapFrame.java:81)"
Und zu meinem Konzept: Die Klasse Tonstudio erzeugt das Fenster und die Bedienelemte. Mit Spuren sind die verschiedenen Aufnahmen gemeint, also die fertigen Tonspuren. Die Klasse SpurenInterface erzeugt somit das Interface der einzelnen Spuren, die eine Erweiterung der Tonstudioklasse sind.
Steht aber alles auch in meinem ersten Beitrag.
 

Joose

Top Contributor
Raten nicht. Hätte ja sein können, dass man daran schon den Fehler sieht.
Am StackTrace kann man sehen wo genau der Fehler passiert. Es wird die Datei + die Zeile verraten. Dort muss man dann entsprechend schauen was kann die Fehlermeldung auslösen und warum gerade diese Fehlermeldung.
Was auch immer "info" ist, irgendwo soll damit gearbeitet werden kann aber nicht das die Variable nicht initialisiert wurde.

Ich denke, dass es nicht an den einzelnen Befehlen im Code liegt, da selbst ohne Befehle wird die Klasse nicht kompiliert, da immer noch diese Exception da ist:
Ja hier gibt es ein Problem mit deinem Compiler, welchen kann ich nicht sagen müsste ich raten bzw. selbst erst googeln.

... Die Klasse SpurenInterface erzeugt somit das Interface der einzelnen Spuren, die eine Erweiterung der Tonstudioklasse sind.
Was bedeutet "erzeugt damit das Interface der einzelnen Spuren"? Meinst du das UserInterface?
Wenn ja, ist hier eine Ableitung von Tonstudio trotzdem ein Fehler. Jedes Objekt deiner Klasse "SpurenInterface" ist zugleich ein Tonstudio, und das ist nicht dein Ziel oder?
 

Harry Kane

Top Contributor
Die erste Klasse ist quasi das Hauptinterface mit dem Frame, etc.
Die Zweite Klasse liefert das Interface für die Spuren:
So die letzte Klasse enthält die ganzen ActionListener, sie ist das Problem.
Ich stimme Thallius zu: Ich sehe keinen Sinn darin, dass die zweite Klasse die erste erweitert und die dritte Klasse die zweite. Aufgrund dieser Vererbungshierarchie kann nämlich auch die letzte Klasse als "Hauptinterface mit dem Frame etc." verwendet werden.
 

SteveT

Mitglied
Gut, dann werde ich mein Code dementsprechend ändern.
Aber noch eine Frage: Wie kann ich die ganzen Objekte klassendübergreifend aufrufen, ohne static bei jedem Objekt benutzen zu müssen?
 

Robat

Top Contributor
Java:
public class Tonstudio{

   JPanel mainpanel;
    ....
   JButton button = new JButton();
   button.addActionListener(new ActionClass(this));
   mainpanel.add(button);
}

Java:
public class Actionclass extends SpurenInterface{

   Tonstudio tonstudio;
  
    public ActionClass(Tonstudio tonstudio)
   {
       this.tonstudio = tonstudio;
    }
}

So kannst du bswp. Objekte an andere Klassen referenzieren :)

Gruß
Robert
 

SteveT

Mitglied
Ok danke.
Aber so muss ich ja noch vor jedem Objekt tonstudio.objekt schreiben, geht das nicht flotter ohne das vorher zu deklarieren?
 

Robat

Top Contributor
Also willst du auf Variablen in einer anderen Klasse zugreifen? Dann hab ich dich falsch verstanden.
Ist aber egal weils aufs selbe hinaus läuft.
Du musst aber jeder Variable noch Getter und Setter (wenn nötig) deklarieren.

Bsp:

Java:
public class Hauptklasse
{
    private Beispiel beispiel;

    public Hauptklasse()
    {
        beispiel = new Beispiel();
        beispiel.setFooBar("foo");
        beispiel.getFooBar();
    }
}

Java:
public class Beispiel
{
    private String foobar;

    public Beispiel()
    {
        //...
    }

    // GETTER
    public String getFoobar() { return this.foobar; }

    // SETTER
    public void setFoobar(String foobar) { this.foobar = foobar; }
}
 

SteveT

Mitglied
Danke für die Tipps.
Für 22 verschiedene Objekte wäre es aber glaub ich einfacher, wenn ich die mit deiner ersten Variante deklariere :)
 

Neumi5694

Top Contributor
22 Objekte sind doch gar nichts.
Du musst halt immer den Grundprinzipien folgen. Sind die Objekte Eigenschaften eines anderen Objekts?
Dann behandle sie auch so. Schreib Getter und Setter, so wie es sich gehört. Rufe sie über eine Referenz auf das instanzierte Objekt auf.
Wenn alle Objekte den gleichen Typ haben, dann denk mal über eine HashMap und Keys nach.
Dann hast du genau eine Variable, eine Get-Methode und eine Set-Methode
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Compiler-Fehler JavaFX - Bekomme Fehlermeldungen nicht weg Allgemeine Java-Themen 31
B Fehlermeldungen die keiner braucht ... Allgemeine Java-Themen 17
D Laufwerkscheck ohne Fehlermeldungen. Allgemeine Java-Themen 9
N kleine Kommazahlen erscheinen plötzlich Allgemeine Java-Themen 19
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
J JScrollPane und Button erscheinen nicht Allgemeine Java-Themen 13
N Input/Output Verhindern, dass log-Einträge auf Console erscheinen Allgemeine Java-Themen 2
M Input/Output FileChannel writes / werden diese gecached vom OS und dann erst geschrieben? Allgemeine Java-Themen 6
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
D mouseWheelMoved => erst reagieren, wenn für 1s das Mausrad nicht mehr benutzt wurde Allgemeine Java-Themen 4
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
T MEthodenauruf testen, wenn instanz erst erzeugt wird Allgemeine Java-Themen 0
D Nutzen, erst deklarieren, oder neu erstellen? Allgemeine Java-Themen 11
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
H Scanner: Ausgabe erst nach Abbruch Allgemeine Java-Themen 8
H StackOverflowError erst ab 87 Array Elementen Allgemeine Java-Themen 4
F externes Programm beginnt erst nach dem ende des mainprogrammes Allgemeine Java-Themen 3
-MacNuke- Calendar erst nach getTime() gesetzt? Allgemeine Java-Themen 4
T Threadsicheres wait() [lock erst mit wait() abgeben] Allgemeine Java-Themen 31
S Zweiten Thread erst starten wenn erster Thread beendet ist ? Allgemeine Java-Themen 6
B Datei erst öffnen, wenn EOF gesetzt ? Allgemeine Java-Themen 4
M Programmablauf nach letzter eingabe erst fortsetzten Allgemeine Java-Themen 2
G Aktualisierung erst nach minimiertem Browser Allgemeine Java-Themen 6
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
C externes Programm läuft erst nach schließen des mainprogramm Allgemeine Java-Themen 7
S [1/2done] Woher bekommt man libarys die es erst ab 1.6 gibt. Allgemeine Java-Themen 10
J Bibliotheken erst zur Laufzeit laden Allgemeine Java-Themen 5
N InputStream erst ab gegebener Position Allgemeine Java-Themen 4
S erst containsKey oder gleich get Allgemeine Java-Themen 9
bernd java.util.Scanner erst ab Java 1.5? Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben