cannot be applied to () ...

nautiLus`

Erfahrenes Mitglied
Hallo, ich habe eine XMLParser Klasse mit einem Konstruktor:

Code:
public class XMLParser
{
	protected static String XMLFilename = "";

	public XMLParser(String XMLFilename)
	{	
		this.XMLFilename = XMLFilename;
		parseFile();
	}
	//... parseFile Methode usw ...
}


In einer anderen Datei (Klasse) steht bei mir folgendes:

Code:
public class Read extends XMLParser
{	
	public static void main(String[] args)
	{		
		XMLParser a = new XMLParser("effectsettings.xml");
	}
}

Was dem Objekt mitgegeben wird, ist ein Dateiname.

Will ich Read.java kompilieren bekomme ich folgenden Error:
Code:
Read.java:1: XMLParser(java.lang.String) in XMLParser cannot be applied to ()
public class Read extends XMLParser
       ^

Wenn ich das Objekt samt Parameterübergabe direkt in der XMLParser Klasse erstelle, geht alles wie gewollt:

Code:
public class XMLParser
{
	protected static String XMLFilename = "";

	public static void main(String args[])
	{
		XMLParser a = new XMLParser("effectsettings.xml");
	}

	public XMLParser(String XMLFilename)
	{	
		this.XMLFilename = XMLFilename;
		parseFile();
	}
	//... parseFile Methode usw ...
}

Nur fällt hier die Read.java weg und das Kompilieren erfolgt eben direkt mit der XMLParser.java Datei.

Da frag ich mich: was ist denn hier falsch?
Was hab ich übersehen? Diese Meldung sagt mir leider nur wenig...
Danke,

nauti
 
Hallo, das hab ich schon versucht...

Wenn ich in der Read.java ganz oben import XMLParser.*;
mache, bekomme ich

Code:
Read.java:1: package XMLParser does not exist
import XMLParser.*;
^

Mach ich was beim Import Befehl falsch oder muss ich da ein Package mit Ordnern machen?

Danke.
 
Naja, hast du deine XMLParser Klasse in dem selben Verzeichnis wie deine Read oder liegt diese woanders.

Wenn sie woanders liegt, musst du die XMLParserKlasse in deinem Classpath einbinden.

Ausserdem, wenn du es importierst, müsstest du deine XMLParserKlasse als Package definieren sprich in den header:

package XMLParser ;

schreiben, damit das so funktioniert wie du es probiert hast.

Basisfrage:
liegt deine XMLParser Klasse in demselben Verzeichnis oder ist wenigstens im Classpath eingebunden?
 
Zuletzt bearbeitet:
Code:
public class Read extends XMLParser
{	...

Hi,
du solltest entweder
1.) Read nicht von XMLParser ableiten, da der Kompiler bei deiner
Implementierung einen Standardkonstruktor sucht, da du einen eignen
Konstruktor geschrieben (mit String Parameter) hast ist dieser nicht mehr
vorhanden, (ausserdem macht es eh keinen Sinn Read von XMLParser abzuleiten...)
Falls du das dennoch willst:
2.) Eiinen Standard Konstruktor in XMLParser defnieren oder
3.) Einen Read Konstruktor definieren in dem du dann explizit mittels super("string")
den XMLParser(String) Konstruktor aufrufst

Gruß

RedWing
 
Hallo, danke für Deine Hilfen zuerst mal...

Also diese beiden Dateien liegen gemeinsam in einem Verzeichnis E:\java welches auch in den Umgebungsvariablen als Classpath gesetzt ist.

Als Package muss ich sowas glaube ich nicht lösen, weil es ja kein Ordner ist denk ich mal. Irgendwie muss es importiert werden, wie du in Deinem 1. Post schon sagtest. Aber.. naja *g* irgendwie seltsam.... was nun? hrhr

nauti

//edit: Ich versuch mal Redwings Vorschlag
 
Argh, stimmt ja, darauf hab ich gar nicht geachtet,

Du erbst ja von XMLParser und versuchst gleichzeitig in der Main deinen Parent zu initialiseren. Wie Redwing sagte, wenn du von XMLParser erben willst baue einen Read()-Konstruktur und rufe in ihm super (filename) auf.

Macht eigentlich nicht viel sinn, die Read klasse wenn du es so machst.
Nimm eher den ersten Vorschlag von RedWing.

Mann-oh-mann.

Ich bin ja Total Banane im Kopp. Danke für die Erleuchtung RedWing, hab ich total übersehen, das er von XMLParser erbt.

So sollte es gehen.
 
Zuletzt bearbeitet:
Hallo, mit Vorschlag 1) von Redwing geht alles perfekt. Danke.
Falls ich doch erben will, werde ich 2) und 3) versuchen.

:) Danke Euch beiden.
 
Zurück