# Fehlermeldung cannot find symbol



## siebeck (9. Jun 2006)

Hallo,

habe folgendes Problem:

Für ein Morsealphabet wurde folgendes Programm geschrieben u. in Datei morse.java abgespeichert:
==============================================

```
class Morse {
	private LinkedList morsealphabet=new LinkedList();
	
	public Morse() {
		morsealphabet.addLast(".-");
		morsealphabet.addLast("-...");
	  }
 
	public String code (char buchstabe)  {
		String result;
		if ((int) buchstabe <65 || (int) buchstabe>90) result="Fehler";
		else {	//in Liste suchen
			result=null;
			LinkedList.ListIterator lI=morsealphabet.listIterator();
			for (int i=0;i<=(int)buchstabe-65;i++)
          result=lI.next();
			}
		return result;
	 }

public static void main (String[] argv) {
	Morse morse=new Morse();
	for (int i=0;i<argv.length;i++)
		System.out.println(morse.code(argv[i].charAt(0)));
	}
}
```
========================================================

Desweiteren gibt es eine Datei LinkedList.java mit folgenden Programmzeilen:
========================================================

```
import java.util.NoSuchElementException;

public class LinkedList {
	Entry header=new Entry(null,null,null);
	int size=0;

	private static class Entry {   //Innere Klasse
		String element;
		Entry next;
		Entry previous;

		Entry(String element, Entry next, Entry previous)   {
			this.element=element;
			this.next=next;
			this.previous=previous;
		}
	}

		class ListIterator {  //NIcht-statische Innere Klasse
			private int nextIndex=0;
			private Entry next=header.next;

		boolean hasnext() {
			return nextIndex!=size;
			}

		String next()  {
			if (nextIndex==size) throw new NoSuchElementException();
			String element=next.element;
			next=next.next;
			nextIndex++;
			return element;
		}
	}



	ListIterator listIterator() {return new ListIterator();}

	LinkedList()  {
		header.next=header;
		header.previous=header;
	}

	String getLast()  {
		if (size==0) throw new NoSuchElementException();
		return header.previous.element;
	}

	String removeLast() {
		Entry lastentry=header.previous;
		if (lastentry==header) throw new NoSuchElementException();
		lastentry.previous.next=lastentry.next;
		lastentry.next.previous=lastentry.previous;
		size--;
		return lastentry.element;
	}

	void addLast(String e) {
		Entry newEntry=new Entry(e,header,header.previous);
		header.previous.next=newEntry;
		header.previous=newEntry;
		size++;
	}

	int size() {
		return size;
	}
}
```
=============================================================

Beim Übersetzen mit javac Morse.java klappt alles

Beim Übersetzen mit javac LinkedList.java erscheint folgende Fehlermeldung:
cannot find symbol
symbol:   class LinkedList
Location: class Morse
private LinkedList morsealphabet=new LinkedList();

Bitte helft mir, bin am verzweifeln!!!

_L-ectron-X hat diesen Beitrag am 11.06.2006 um 16:10 Uhr editiert.
Code-Tags eingefügt._


----------



## SamHotte (9. Jun 2006)

```
import java.util.LinkedList;
```

_edit_ sorry, zusätzlich muss natürlich der javac-Befehl "javac Morse.java" heißen ...


----------



## siebeck (10. Jun 2006)

Danke für die Antwort.

Dieser Fehler wurde behoben. Allerdings wundert mich, daß es java.util.LinkedList heißen muß. LinkedList habe ich im selben Verzeichnis abgelegt., muß es daher nicht import java.LinkedList heißen?

Jetzt kommt noch eine weitere Fehlermeldung, uns war

G:\>javac Morse.java
Morse.java:41: cannot find symbol
symbol  : class ListIterator
location: class java.util.LinkedList
                        LinkedList.ListIterator lI=morsealphabet.listIterator();

                                  ^
Note: Morse.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error


Die Klasse ListIterator ist im selben Verzeichnis, heißt allerdings LInkedList$ListIterator

Woran liegt es nun?


----------



## Murray (10. Jun 2006)

Wenn Du eine eigene Klasse LinkedList hast, dann darfst Du nicht java.uutil.LinkedList importieren; dann wird nämlich nicht Deine, sondern die Standard-Klasse verwendet.

Wenn Dein Klassen kein Package habe (oder alle das geliche), dann brauchst Du hier überhaupt keinen Import.

Möglicherweise fehlt bei Dir das aktuelle Verzeichnis im Classpath?


----------



## siebeck (11. Jun 2006)

Habe folgendes in der Umgebungsvariablen der Systemsteuerung eingegeben:

PATH:   d:\programmierung\javaJDK1.5\bin

Nach der jetzigen Antwort habe ich unter CLASSPATH eingegeben:
CLASSPATH: d:\programmierung\javaJDK1.5\bin

Im Unterverzeichnis sind die EXE-Dateien für java, javac etc. enthalten

Die Datei javac Morse.java rufe ich unter g:\ auf, wo sich die Dateien Morse.java, LinkedList.java befinden.

Was ist der Unterschied zwischen PATH und CLASSPATH? 

Es funktioniert immer noch nicht


----------



## L-ectron-X (11. Jun 2006)

Path zeigt auf Verzeichnisse im Dateisystem. Dieser Umgebungsvariable solltest du das Installationsverzeichnis deines JDK/bin-Verzeichnisses hinzufügen.
Im Classpath sucht der Interpreter nach den ihm übergebenen Java-Programmen. Hier trägst du ein, wo deine Java-Programme (.class, .jar) zu finden sind.


----------



## siebeck (11. Jun 2006)

unter CLASSPATH habe ich nun das Verzeichnis eingesetllt.

Trotzdem kommt noch der gleiche Fehler.

Andere Programme laufen, das heißt doch eigentlich, das es an etwas anderen liegen müßte oder?


----------



## Murray (11. Jun 2006)

Versuch mal _javac *.java_


----------



## siebeck (11. Jun 2006)

dann kommt selbe Fehlermeldung.
Allerdings braucht der Rechner eine Weile, bis die Meldung kommt. Anscheinend arbeitet er eine Weile.


----------

