Instantiierung von Klasse scheitert

  • Themenstarter Themenstarter takatakataka
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

takatakataka

Gast
Hallo,

habe folgendes Problem: Wie man unten sieht, möchte ich ein Objekt von der Klasse "StdEingabe" in "Klasse" erzeugen. Beide sind im gleichen Verzeichnis, trotzdem bekomme ich von javac, ein "cannot find symbol", woran kann das liegen?

Danke im Vorraus für eure Bemühungen.

taka³

Code:
class Klasse
{
	
public static void main(String [] args)
	{	
		StdEingabe instream_ref;
		instream_ref = new StdEingabe();		
	}//endmethod main
}
[/code]
 
Sky hat gesagt.:
Wie sieht die Klasse StdEingabe aus ? Wie versuchst Du das ganze zu kompilieren ?

An StdEingabe wird es nicht liegen, weil genau der gleiche Quellcode auf einem anderen PC problemlos übersetzt wird. Ich führe einfach "javac Klasse.java" aus.
 
gote hat gesagt.:
warum machst du eien class Klasse auf und beendest sie net?
1. Weil ich ein Anfänger bin.
2. Weil es nichts an dem Problem ändert, dass ich es nicht compilieren kann, was auf einem anderen PC funktioniert.
 
Beide Klassen lassen sich auf einem anderem PC übersetzen ?

In welcher Zeile ist denn der Fehler ?
 
ich bin auch anfänger und hab gelernt, lieber felix, es muss immer eine klasse public geben und darin ist die main()
 
Sky hat gesagt.:
Beide Klassen lassen sich auf einem anderem PC übersetzen ?

In welcher Zeile ist denn der Fehler ?

Ja, genau. Hier die Ausgabe des Compilers:

Code:
Klasse.java:7: cannot find symbol
symbol  : class StdEingabe
location: class Klasse
                StdEingabe instream_ref;
                ^
Klasse.java:8: cannot find symbol
symbol  : class StdEingabe
location: class Klasse
                instream_ref = new StdEingabe();
                                   ^
2 errors
[/code]
 
gote hat gesagt.:
ich bin auch anfänger und hab gelernt, lieber felix, es muss immer eine klasse public geben und darin ist die main()

Auf dem anderen System hat es wie gesagt funktioniert, auch ohne public in der class "Klasse". Aber natürlich habe ich auch noch mal vor "class Klasse" public gehängt. StdEingabe ist schon public. Hat nichts geholfen.
 
gote hat gesagt.:
warum machst du eien class Klasse auf und beendest sie net?
wie kann man denn eine class "aufmachen" bzw "beenden" :bahnhof:

@fragesteller: ist die StdEingabe.java auch auf dem rechner? im gleichen verzeichnis?
 
Roar hat gesagt.:
gehört StdEingabe vielleicht in ein package?

Nein, in StdEingabe ist kein package deklariert, falls Du das meinst. Also meines Erachtens kann es ja nicht an Fehler in den Klassen liegen. Gibt es da vielleicht ausserhalb Lösungsansätze? Liegt es vielleicht irgendwie an dem Compiler?
 
geh mal in der konsole in das verzeichnis (hast du wahrscheinlich schon gemacht) und kopmilier mit: javac -cp . Klasse.java
 
Code:
class Klasse
{
	
public static void main(String [] args)
	{	
		StdEingabe instream_ref;
		instream_ref = new StdEingabe();		
	}//endmethod main
}

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class StdEingabe {

	private BufferedReader console = new BufferedReader(new InputStreamReader(
			System.in));

	StdEingabe() {

	}

	char liesCharacterSkipLine() {
		char c = 0;
		try {
			String s = console.readLine();
			return (char) s.charAt(0);
		} catch (Exception e) {
			return 0;
		}
	}

	int liesIntegerN(String text) {
		int read = 0;
		boolean test = true;
		while (test) {
			test = false;
			System.out.print(text);
			try {
				read = Integer.valueOf(console.readLine()).intValue();
			} catch (Exception e) {
				System.err.println("Fehler bei der Eingabe eines Integer-Wertes");
				test = true;
			}
		}
		return read;
	}

	int liesInteger(String text) {
		int read = 0;
		System.out.print(text);
		try {
			read = Integer.valueOf(console.readLine()).intValue();
		} catch (Exception e) {
			System.err.println("Fehler bei der Eingabe eines Integer-Wertes");
			System.exit(1);
		}
		return read;
	}

	float liesFloatN(String text) {
		float read = 0;
		boolean test = true;
		while (test) {
			test = false;
			System.out.print(text);
			try {
				read = Integer.valueOf(console.readLine()).floatValue();
			} catch (Exception e) {
				System.err.println("Fehler bei der Eingabe eines Float-Wertes");
				test = true;
			}
		}
		return read;
	}

	double liesDouble(String text) {
		double read;
		System.out.print(text);
		try {
			read = Double.valueOf(console.readLine()).doubleValue();
		} catch (Exception e) {
			System.err.println("Fehler bei der Eingabe eines Double-Wertes");
			read = Double.NaN;
		}
		return read;
	}

	double liesDoubleN(String text) {
		double read = Double.NaN;
		boolean test = true;
		while (test) {
			test = false;
			System.out.print(text);
			try {
				read = Double.valueOf(console.readLine()).doubleValue();
			} catch (Exception e) {
				System.err.println("Fehler bei der Eingabe eines Double-Wertes");
				test = true;
			}
		}
		return read;
	}
	
	String liesStringMaxN(int max,String text) {
		boolean test = true;
		String out = "";
		while (test) {
			test = false;
			System.out.print(text);
			try {
				out = console.readLine();
			} catch (IOException e) {
				System.err.println("FEHLER bei der Eingabe eines begrenzten String-Wertes");
				test = true;
			}
			
			if(out.length() > max) {
				System.err.println("FEHLER - Eingabe ist zu lang max. " + max + " Zeichen");
				out = "";
				test = true;
			}
		}
		return out;
	}
}
[/code]
 
Roar hat gesagt.:
geh mal in der konsole in das verzeichnis (hast du wahrscheinlich schon gemacht) und kopmilier mit: javac -cp . Klasse.java

Der Compiler gibt dann aus:
Code:
javac: no source files
[/code]
 
Habe herausbekommen, woran es lag. Es war doch ein Eintrag in CLASSPATH. War noch von einer alten Installation. Hatte erwartet dass das Löschen aus der Systemsteuerung, keinen Neustart oder das manuelle Entfernen auf der Kommandozeile notwendig macht. Habe mich scheinbar zu sehr von Windows entwöhnt.

Danke für eure Mühe.
 
Hi! Habe das selbe problem wie oben genannt.
Bin KOMPLETTER anfänger und habe wirklich nur sehr geringe ahnung von java.

Dass ich bei der systemsteuerung unter system bei den variablen den PATH verändern musste (C:/Programme/Java/jdk1.5.0_09/bin) habe ich noch gewusst. Aber einen CLASSPATH finde ich nicht. Und wenn ich einen neuen eingeben sollte, wo soll ich das hin verweisen?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben