Herbert mit den grossen Ohren und dem kleinen Kinn: unbekannter Fehler im Java Compiler

Hi Leute,

ich fange gerade an Java zu lernen und lerne anhand eines Tutorials.
Obwohl ich den Code zig mal verglichen habe bekomme ich einen Fehler für folgende Zeile:

tabbedPane.addTab("Welcome", "Null", new Welcome(), "Welcome to the dive log");

Fehlermeldung: Can't resolve Symbol Welcome

Könnte mir vielleicht jemand freundlicherweise die Erleuchtung geben?

Danke

  1. Hallo Herbert,

    Die Klasse Welcome gibt es wohl nicht. Daher klappt das mit dem new Welcome() auch nicht.

    Grüße

    Daniel

    1. Hi,

      Die Klasse Welcome gibt es wohl nicht. Daher klappt das mit dem new Welcome() auch nicht.

      Doch ich habe leere Klassen angelegt und kompiliert.
      Die sind da.

      hb

      1. Hallo,

        Doch ich habe leere Klassen angelegt und kompiliert.

        Sicher, dass er die auch findet? Gib beim kompilieren mal den Pfad zu den Klassen mit -cp an oder teste nur das erzeugen der Klasse Welcome.

        Grüße

        Daniel

        1. Hi,

          Sicher, dass er die auch findet? Gib beim kompilieren mal den Pfad zu den Klassen mit -cp an oder teste nur das erzeugen der Klasse Welcome.

          Also ich benutze Sun ONE Studio 5 als IDE (heute zum ersten Mal).

          Ich habe keine Ahnung wie ich den Befehl -cp benutze.
          Also, wie ganz am Anfang erwähnt, bin Anfänger.

          Wie genau geht das?

          Danke

          1. Hallo,

            Ich habe keine Ahnung wie ich den Befehl -cp benutze.

            Das ist ne option für den Compiler. Bin davon ausgegangen, dass Du keine IDE benutzt. Mit Sun ONE Studio solltest Du das nicht brauchen. Jedenfalls findet der Kompiler aus irgend welchen Gründen die Klasse nicht. Vielleicht liegt sie im falschen Verzeichnis oder so. Wenn Du Klassen ohne Paketnamen verwendest, sollten die in keinem unterordner sein. Die IDE sieht diese Verzeichnisse idR als Pakete an.
            Generell würde ich empfehlen nicht mit einer derart komplexen IDE anzufangen. Die ganzen Funktionen verwirren meiner Meinung nach nur. Schon gar nicht dann, wenn dein Javabuch nicht auch in diese Entwicklungsumgebung einführt.

            Grüße

            Daniel

            1. Hi,

              ja also ich wollte mich mal in diese IDE reinarbeiten.

              ALLE Dateien liegen im gleichen Verueichnis "divelog".

              Hier ist die Klasse die Probleme bereitet:

              package divelog;

              import javax.swing.*;
              import java.awt.*;
              import java.awt.event.*;

              public class DiveLog
              {
                  private JFrame dlframe;
                  private JTabbedPane tabbedPane;

              public DiveLog()
                  {
                      dlframe = new JFrame("A Java(TM) New Technology Dive Log");

              dlframe.addWindowListener(new WindowAdapter()
                      {
                          public void windowClosing(WindowEvent e)
                          {
                              System.exit(0);
                          }
                      });

              tabbedPane = new JTabbedPane(SwingConstants.LEFT);
                      tabbedPane.setBackground(Color.blue);
                      tabbedPane.setForeground(Color.white);
                      populateTabbedPane();

              }

              private void populateTabbedPane()
                  {
                      tabbedPane.addTab("Welcome", null, new Welcome(),"Welcome to the dive log");
                      tabbedPane.addTab("Diver Data", null, new Diver(), "Click here to enter diver data");
                      tabbedPane.addTab("Log Dives", null, new Dives(), "Click here to enter dives");
                      tabbedPane.addTab("Statistics", null, new Statistics(), "Click here to calculate statistics");
                      tabbedPane.addTab("Favorite website", null, new WebSite(), "Click here to see a website");
                      tabbedPane.addTab("Resources", null, new Resources(), "Click here to see a list of resources");
                  }

              }

              Die anderen klassen sind halt nur leere Gerüste (alle gleich bis auf den Klassenamen und natürlich dann auch den Dateinamen):

              package divelog;
              /**
               * This class creates the content on the
               * Welcome tabbed pane in the Dive Log
               * application.
               * @version 1.0
              */
              //import for buttons, labels, and images
              import javax.swing.*;
              //import for layout manager
              import java.awt.*;

              public class Welcome extends JPanel
              { //Opens class

              }//Closes class

              Man kann da doch eigentlich nix verkehrt machen.
              Könnte der Fehler in den Zeilen davor liegen?

              Danke

              1. Hallo,

                Hi,

                ja also ich wollte mich mal in diese IDE reinarbeiten.

                ALLE Dateien liegen im gleichen Verueichnis "divelog".

                mit dem Kommandozeilenkompiler klappt es, wenn man die Zeilen mit den anderen Klassen (new Diver, new Dives,...) auskommentiert, d.h. es liegt nicht am Quelltext.
                Deine IDE kenne ich nicht, ich nehme Eclipse. Trotzdem wird es an der Konfiguration der IDE liegen.

                probiere mal:

                • heißen die Dateien .java?
                • sind die Namen richtig (Groß-/Kleinschreibung beachten)?
                • Klassenpfad für das aktuelle Projekt (Unterverzeichnis) konfiguriert?
                • Wurde vorher ein neues Projekt angelegt?
                • Müssen evtl. neue Dateien erst zum Projekt hinzugefügt werden?
                • Kompilierst du mit "Datei kompilieren" oder "Projekt kompilieren" (oder so ähnlich)?
                • Wenn du in der Datei Welcome einen Fehler einbaust, meckert er dann?

                Probiere erst mal alles durch, dann solltest du es herausfinden. Es ist wie Daniel schon sagte durchaus zu empfehlen zuerst mit Texteditor und nicht mit einer IDE anzufangen, insbesonders wenn man noch nie mit einer IDE gearbeitet hat. Jedenfalls solange man noch dabei ist die Sprache zu lernen.

                Dominik

                1. Hi,

                  habe das Problem gefuden.
                  Ich habe das Verzeichnis einfach eine Ebene höher gemnountet und nun funzt es. Was ein blöder Fehler.

                  Trotzdem vielen Dank für die nette Hilfe von allen.

                  Gruss
                  HB

                  1. Hallo,

                    Ich habe das Verzeichnis einfach eine Ebene höher gemnountet und nun funzt es. Was ein blöder Fehler.

                    Die Verzeichnisse sind im Studio Pakete. Du kannst Javaklassen also nicht einfach in ein Unterverzeichnis kopieren. Die Package-Angabe muss dann auch dieses Verzeichniss angeben.
                    Wenn Du Unterverzeichnisse verwenden willst, um den Code übersichtlicher zu verwalten, musst Du diese Verzeichnisse wiederum mounten. Gibt da einen Menüpunkt dafür.

                    Grüße

                    Daniel

                2. Hallo,

                  • heißen die Dateien .java?

                  Sieht er vermutlich nicht in der IDE. Wenn die Dateien mit der IDE erzeugt würden, stimmt das.

                  • sind die Namen richtig (Groß-/Kleinschreibung beachten)?

                  Ja das wäre ein möglicher Fehler. Allerdings macht das das Studio idR richtig. Ein nachträgliches ändern der Groß- und Kleinschreibung im Source könnte aber zu so einem Fehler führen.

                  • Klassenpfad für das aktuelle Projekt (Unterverzeichnis) konfiguriert?

                  Unterverzeichnisse sind im Studio immer Pakete. Das macht die IDE automatisch richtig.

                  • Wurde vorher ein neues Projekt angelegt?

                  Sollte nicht nötig sein.

                  • Müssen evtl. neue Dateien erst zum Projekt hinzugefügt werden?

                  Müssen sie bei dieser IDE nicht. Kompilieren kann man sie auch so.

                  Grüße

                  Daniel

  2. habe d'ehre

    tabbedPane.addTab("Welcome", "Null", new Welcome(), "Welcome to the dive log");

    Fehlermeldung: Can't resolve Symbol Welcome

    Anfuehrungszeichen bei "null" wegnehmen

    --
    carpe diem
    Wilhelm
    1. Hi,

      Anfuehrungszeichen bei "null" wegnehmen

      Danke, das war mit sicherheit auch ein "blöder" Fehler von mir, allerdings hat es das Problem nicht gelöst. Habe "Null" auch nun klein geschrieben, aber es geht immer noch nicht.

      Gruss

      HB