Can not find symbol - fehlermeldung

Status
Nicht offen für weitere Antworten.

Chrigu

Mitglied
Hi

Bin seit paar Tagen fleissig am Java lernen. Nun hab ich hier nen kleines Problem:

Beim compilieren von Daten die auf andere Classen zugreifen, kommt bei mir immer der Fehler:

Cannont find symbol

Dies sogar bei den Scripten, welche aus Lehrbüchern kommen!

Da ich die Suchenfunktion bereits genutzt habe & das gleiche Problem gefunden habe, welches dort gelöst wurde indem die CLASSPATH Variable angepasst wird, habe ich das auch schon angeschaut. So sieht meine CLASSPATH aus:

Code:
C:\Programme\Java; C:\Java; C:\Java\Fahrzeug; C:\Programme\Java\jdk1.5.0_07\bin;

Hier ein Auszug aus meinem eigenen kleinen Testscript:
Code:
--> HalloWelt.java 

package welt; 
import welt.HalloAusgabe; 
public class HalloWelt { 
    public static void main(String[] args) { 
        ausgabe(); 
    } 
} 

--> HalloEingabe.java 

package welt; 
public class HalloAusgabe { 
protected void ausgabe() 
    { 
        System.out.println("Hallo Welt!"); 
    } 
}


Kann mir da wer irgendwie helfen?

Ahja, die Scripte sind abgelegt unter: c:\java\
 

Revenant

Aktives Mitglied
Also da sind mehrere Fehler drin..

zuerst ein paar grundlegende Sachen:

Pakete müssen sich in dem "Projetkverzeichnis" sag ich jetzt mal (bei mir ../test) in einer Verzeichnisstruktur wiederspiegeln. Für jedes Paket muss also ein Verzeichnis angelegt sein, in dem sich dann die .class Dateien (also die vorkompilierten .java Dateien) befinden! In deinem Fall würde das dann so aussehen:

Code:
../test/          //hier ist die Hauptquellcodedatei drin, also die HalloWelt.class
../test/welt/   //das hier ist das Verzeichnis des Paketes welt, in dem sich die .class Dateien des Paketes befinden müssen

Pakete dienen nicht nur der Gruppierung von Klassen, sie regeln auch noch den Zugriff auf diese. Klassen innerhalb eines Paketes können also auf sich selbst zugreifen, Paket übergreifende Zugriffe können jedoch nur erfolgen, wenn die Klasse in dem Paket als public deklariert ist (gleiches gilt für Methoden und Felder von Klassen, d.h. dein "protected" ist falsch).

Ausserdem hast du vergessen eine Instanz der Klasse HalloAusgabe zu erzeugen.

Lösung:

1.Projektverzeichnis anlegen "../test/"

2.Paketverzeichnis anlegen "../test/welt/"

3.Hauptdatei erstellen "../test/HalloWelt.java"

4.Paketdateien erstellen "../test/welt/HalloAusgabe.java"

5.Paketdateien kompilieren

6.Hauptdatei kompilieren

7.Programm ausführen


Habs mal ausprobiert funktioniert so bei mir einwandfrei. Hier noch der Code der Dateien:

Code:
//die Hauptdatei

import welt.*; //alle Klassen des Paketes welt einbinden, alternativ hier 
               //auch import welt.HalloAusgabe

public class HalloWelt {
    public static void main(String[] args) {
        HalloAusgabe aus = new HalloAusgabe();
	  aus.ausgabe();
    }
}


Code:
//die HalloAusgabe.java ist Teil des Paketes welt und muss also vorkompiliert im 
//Verzeichnis test/welt/ als HalloAusgabe.class vorliegen! 

package welt;

public class HalloAusgabe {

    public void ausgabe() {
    
	System.out.println("Hallo Welt");

    }

}


Wenns klappt, tust uns allen noch den gefallen und markierst das Thema als gelöst


Gruß
Revenant
 
G

Guest

Gast
du versuchst hier auf eine methode aus einer anderen klasse zuzugreifen (ausgabe()) ohne das du davon eine Instanz erzeugt hast. Die VM sucht jetzt in deiner HalloWelt Klasse nach der ausgabe() methode und findet sie nicht.

Code:
public class HalloWelt {
    public static void main(String[] args) {
        HalloAusgabe ha = new HalloAusgabe();
        ha.ausgabe();
    }
}


btw. sowas nennt man ehr quelltext oder sourcecode anstatt script, das ist hier kein javascript ;)

zudem müsstest du dir das
Code:
import welt.HalloAusgabe;
sparen können da die beiden Klassen ja im selben Package liegen und du da nichts importieren musst
 

Acha

Bekanntes Mitglied
Ich weiß nicht, ob das schon gegen den Fehler hilft, aber normalerweise heißen Javadateien genauso, wie die Klasse, also:

Klasse -> Datei
HalloWelt->HalloWelt.java
HalloAusgabe ->HalloAusgabe.java(und nicht:HalloEingabe.java)

Bennene das mal bitte um!

MFG

Acha
 

Chrigu

Mitglied
hmmm, ok da kommen wir der Sache näher ;-) Merci

Nun soweit funktioniert das Ganze. Aber wenn ich nun eine weitere Class Datei mache, mit dem Quelltext:

Code:
package welt;

public class HalloAusgabe2 extends HalloAusgabe {
	public void ausgabe() {
		System.out.println("Hallo Welt");
		System.out.println("Adios Welt");
	}
}

Dann kommt wieder die genau gleiche Fehlermeldung...

Könnte es sein, dass ich die methode ausgabe() gar nicht überschreiben darf, da sie nicht abstract ist? Oder habe ich sonst wieder irgendwo nen Hasen vergraben & finde ihn nicht mehr?

EDIT: Ahja die Ordnerstruktur sieht jetzt so aus:

c:\java\ --> HalloWelt
c:\java\welt\ --> HalloEingabe & HalloEingabe2

@Gast#1 --> Jau sorry, heisst natürlich Quelltext. Ich komme aus der weiten Welt des PHP, da ist halt alles nen code oder nen script ;-)[/code]
 
G

Gast

Gast
Wo ist denn jetzt noch das Problem und wie sehen die Klassen aktuell aus?
 

Revenant

Aktives Mitglied
Bis jetzt sieht das ganze so aus:

Code:
..test/HalloWelt.java
..test/welt/HalloAusgabe.java

die dazugehörigen Dateien...

Code:
//die Hauptdatei HalloWelt.java
import welt.*;
              

public class HalloWelt {
    public static void main(String[] args) {
        HalloAusgabe aus = new HalloAusgabe();
     aus.ausgabe();
    }
}

Code:
//die HalloAusgabe.java
package welt;

public class HalloAusgabe {
    public void ausgabe() {
     System.out.println("Hallo Welt");
    }
}

... lassen sich auch kompilieren und ausführen "Hallo Welt"


erweitert man das Ganze jedoch noch um eine 3. Datei

Code:
..test/welt/HalloAusgabe2.java

so kann man diese..

Code:
package welt;


public class HalloAusgabe2 extends HalloAusgabe {
   public void ausgabe() {
      System.out.println("Hallo Welt");
      System.out.println("Adios Welt");
   }
}

...nicht mehr kompilieren, denn:

" javac HalloAusgabe2.java
HalloAusgabe2.java:4: cannot find symbol
symbol: class HalloAusgabe
public class HalloAusgabe2 extends HalloAusgabe {
^
1 error"


warum
:?:

die Klasse HalloAusgabe müsste doch der Klasse HalloAusgabe2 bekannt sein, da sie sich im gleichen Paket befindet
 

SnooP

Top Contributor
füge mal deinem Classpath den . für das aktuelle Verzeichnis hinzu...:
classpath=".;c:\java;...."
Außerdem musst du zum kompilieren der datei im verzeichnis davor sein und so kompilieren javac welt.HalloAusgabe2.java, bzw. kompilier einfach die HalloWelt.java und veränder dort den Aufruf des Objekts - z.B. so:
HalloAusgabe aus = new HalloAusgabe2();
 

bummerland

Top Contributor
du musst einen ordner höher gehen und dann
Code:
javac -cp . welt/HalloAusgabe2.java

edit: viel zu spät :autsch:
 

Revenant

Aktives Mitglied
jo funktioniert so. danke für eure mühe.
da is es wohl am besten die java dateien der pakete erst gar nicht getrennt zu kompilieren, sondern einfach die immer nur die hauptdatei...
 

Chrigu

Mitglied
jau, jetzte funktionierts... Merci für eure Hilfe. Nun habe ich das mit den Packages doch noch begriffen ;-)

(btw. sorry für das späte Erledigt-Schalten des Threads - ich war im Urlaub ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
L Fehlermeldung: RealMirror.java cannot find symbol Java Basics - Anfänger-Themen 2
K Ständige Fehlermeldung "Cannot find symbol" Java Basics - Anfänger-Themen 2
S Fehlermeldung cannot find symbol Java Basics - Anfänger-Themen 8
W Cannot find Symbol Java Basics - Anfänger-Themen 5
A Cannot find symbol mit Konstruktoren Java Basics - Anfänger-Themen 27
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
L cannot find symbol variable Kon Java Basics - Anfänger-Themen 8
F Erste Schritte error: cannot find symbol Java Basics - Anfänger-Themen 5
R return: cannot find symbol Java Basics - Anfänger-Themen 2
L Bluej Error: Cannot find Symbol Java Basics - Anfänger-Themen 13
S Cannot find symbol (symbol ist eine Variable) Java Basics - Anfänger-Themen 13
N Cannot find symbol Java Basics - Anfänger-Themen 18
P Cannot find symbol, wieso? Java Basics - Anfänger-Themen 5
M Erste Schritte cannot find symbol - Probleme mit Klassen Java Basics - Anfänger-Themen 6
J Error: cannot find symbol - variable Java Basics - Anfänger-Themen 3
F Erste Schritte parseint: cannot find symbol Java Basics - Anfänger-Themen 6
J Can't find symbol - Erstellung eines Objekts in if-Bedingung Java Basics - Anfänger-Themen 3
J Input/Output Can not find symbol Java Basics - Anfänger-Themen 2
M Vererbung - Cannot Find Symbol constructor... Java Basics - Anfänger-Themen 11
D error: cannot find symbol Java Basics - Anfänger-Themen 3
B Frage zu Beispielprogramm: "error: cannot find symbol" Java Basics - Anfänger-Themen 2
BlueMountain Erste Schritte error: cannot find symbol Java Basics - Anfänger-Themen 2
L Error: Cannot find symbol Java Basics - Anfänger-Themen 1
P Cannot find Symbol Java Basics - Anfänger-Themen 3
L Cannot Find Symbol - Was soll denn das bedeuten?!? Java Basics - Anfänger-Themen 7
P StdIn.readDouble: cannot find symbol Java Basics - Anfänger-Themen 7
B Fehler "Cannot find symbol - variable number1" Java Basics - Anfänger-Themen 13
B Compiler-Fehler cannot find symbol Java Basics - Anfänger-Themen 6
K Cannot find symbol Java Basics - Anfänger-Themen 3
H cannot find symbol Java Basics - Anfänger-Themen 4
S cannot find symbol, symbol: constructor Java Basics - Anfänger-Themen 2
3 Compiler-Fehler Fehlerbehebung cannot find Symbol Java Basics - Anfänger-Themen 4
R Compiler-Fehler Cannot find symbol (Method printIn) Java Basics - Anfänger-Themen 3
B Polymorphie A obj = new B; "cannot find symbol app()" Java Basics - Anfänger-Themen 5
H Scanner (can not find symbol) Java Basics - Anfänger-Themen 15
T Cannot find Symbol(String) Java Basics - Anfänger-Themen 9
2 Compiler-Fehler cannot find symbol Java Basics - Anfänger-Themen 13
B Erste Schritte cannot find symbol - problem Java Basics - Anfänger-Themen 9
D Cannot find symbol variable Java Basics - Anfänger-Themen 9
A Compiler-Fehler Cannot find Symbol Java Basics - Anfänger-Themen 6
V Packages: Cannot find symbol Java Basics - Anfänger-Themen 12
J Cannot find Symbol Variable mit JPanels Java Basics - Anfänger-Themen 2
D Cannot Find Symbol Java Basics - Anfänger-Themen 6
M Compile Time Error - cannot find symbol (Objekt!) Java Basics - Anfänger-Themen 2
L Problem mit Vererbung (extends) cannot find symbol Java Basics - Anfänger-Themen 3
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
N cannot find symbol URL Java Basics - Anfänger-Themen 2
S Problem mit Javaeditor: Cannot find Symbol Java Basics - Anfänger-Themen 13
P cannot find Symbol - WTF? Java Basics - Anfänger-Themen 4
R can not find symbol Java Basics - Anfänger-Themen 4
StupidAttack cannot find symbol Java Basics - Anfänger-Themen 16
B Cannot find symbol-Fehler Java Basics - Anfänger-Themen 3
Luk10 Cannot find Symbol Daten Java Basics - Anfänger-Themen 10
E cannot find symbol??? Java Basics - Anfänger-Themen 8
B cannot find symbol Java Basics - Anfänger-Themen 11
N cannot find symbol Java Basics - Anfänger-Themen 11
T OOP cannot find symbol Java Basics - Anfänger-Themen 4
A cannot find symbol - symbol : method Java Basics - Anfänger-Themen 5
T cannot find symbol Java Basics - Anfänger-Themen 5
I Cannot find Symbol & NullPointerException Java Basics - Anfänger-Themen 8
A cannot find symbol. Java Basics - Anfänger-Themen 5
G cannot find symbol! Java Basics - Anfänger-Themen 22
L cannot find symbol-method Java Basics - Anfänger-Themen 3
P Error: Cannot find Symbol Java Basics - Anfänger-Themen 4
J JOptionDialog "cannot find symbol" Java Basics - Anfänger-Themen 3
P JLayer 1.0 - cannot find symbol Java Basics - Anfänger-Themen 4
M cannot find symbol. Java Basics - Anfänger-Themen 7
T ChangeListener cannot find Symbol? Java Basics - Anfänger-Themen 2
D "identifier expected" und "cannot find symbol Java Basics - Anfänger-Themen 4
B cannot find symbol method equalsIgnoreCase? Java Basics - Anfänger-Themen 23
G Cannot find symbol, Suchfunktion benutzt Java Basics - Anfänger-Themen 3
A cannot find symbol :-( Java Basics - Anfänger-Themen 2
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
A Thread find number Java Basics - Anfänger-Themen 8
D Datentypen Datentyperstellung | Kompiler sagt Syntax Error doch ich find keine Lösung Java Basics - Anfänger-Themen 2
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
P Irgendein billiger Fehler aber ich find ihn nicht Java Basics - Anfänger-Themen 16
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
N Java find - findet nix Java Basics - Anfänger-Themen 1
J TCP MultiThreaded Server und Client - irgendwo ist der Fehler, aber ich find ihn nicht Java Basics - Anfänger-Themen 3
P Compiler-Fehler Could not load or find main class fehler Java Basics - Anfänger-Themen 15
P Compiler-Fehler could not find or load main class Java Basics - Anfänger-Themen 5
E Could not find the main class! Java Basics - Anfänger-Themen 11
R Classpath java.io.IOException: Could not find resource mybatis-config.xml Java Basics - Anfänger-Themen 5
Prodriver22 Erste Schritte "Could not find Main Class" Problem Java Basics - Anfänger-Themen 17
B JAR Could not find main class Java Basics - Anfänger-Themen 13
Q Could not find main class: XXX.main. Programm will exit Java Basics - Anfänger-Themen 4
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
R Could not find the main class: Java Basics - Anfänger-Themen 12
R Cannot find a free socket for the debugger Java Basics - Anfänger-Themen 6
C Eclipse JAR Export could not find main class Java Basics - Anfänger-Themen 13
S OOP "Could not find the main class" Java Basics - Anfänger-Themen 10
D Could not find main class Java Basics - Anfänger-Themen 3
C Could not find the main class. Java Basics - Anfänger-Themen 14
B Could not find the main class. program will exit Java Basics - Anfänger-Themen 11
T could not be find the main class Java Basics - Anfänger-Themen 3
R Could not find main method Java Basics - Anfänger-Themen 3
W Cannot find symbole variable Java Basics - Anfänger-Themen 4
P Hello World-Programm: XPSP3 mit Java 1.6.0_16: Could not find main class Hello.java Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben