Cannot find symbol : construktor --- Deklariert!

Tobse

Top Contributor
Hi,
ich habe hier folgendes Problem:
Java:
public class idpp {
	/* Variablen */
	public idpp(mapp header, mapp get_data, OutputWriter pw) {
		/* Konstruktor */
	}
	/* Weitere Methoden */
}
// Die Klassen mapp, OutputWriter und idpp funktionieren und sind kompilierbar!
Und hier bekomme ich den fehler:
Java:
idpp cms=new idpp(request, GET_DATA, wr);
JavaCompiler hat gesagt.:
CMSLoader.java:69: cannot find symbol
symbol : constructor idpp(core.mapp,core.mapp,core.OutputWriter)
location: class idpp
idpp cms=new idpp(request, GET_DATA, wr);
^
1 error

Weiss jemand, wo das Problem liegt? (Ich benutze JCreator)
 

Illuvatar

Top Contributor
Vielleicht ist das in
Code:
idpp
aus Versehen
Code:
java.io.OutputWriter
?
 

z-mon

Bekanntes Mitglied
Hallo Tobse,

zuerst einmal lass dir gesagt sein, das Klassen IMMER mit einem Großbuchstaben anfangen. Daher bitte Idpp.java.

Was erhälst du für eine Fehlermeldung wenn du dreimal null als Parameter übergibst?
 

Tobse

Top Contributor
zuerst einmal lass dir gesagt sein, das Klassen IMMER mit einem Großbuchstaben anfangen. Daher bitte Idpp.java.
Werde ich verbessern. Komischerweise klappts aber auch mit Kleinbuchstaben ;)
Java:
Idpp cms=new Idpp(null,null,null);
lässt sich einwandfrei kompilieren, endet aber natürlcih ein einer NullPointerException.

EDIT:
java.io_OutputWriter gibt es nicht (nicht in meiner API).
Habe aber trotzdem verbessert:
Java:
public Idpp(mapp header, mapp get_data, core.OutputWriter pw) {

Lässt sich jedoch immer noch nicht kompilieren.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
arbeite zunächst nur mit einem Attribut, z.B. mapp,
kannst du da ein Objekt übergeben?
gibt beim Aufrufer ansonsten getClass() des mapp-Objektes aus,
und übergib null damit sich das ausführen läßt,

im Konstruktor gibst du mapp.class aus, gleiche Ausgaben?

beim Aufrufer kannst du noch mit Reflection die Konstruktoren anschauen,
Class.getDeclaredConstructors(), dann dort die Klasse des einen Parameter holen und mit der beim Aufrufer bekannten mapp.class vergleichen (equals, == )
 
Zuletzt bearbeitet von einem Moderator:

Tobse

Top Contributor
Java:
Idpp cms=new Idpp(header);
zu
Java:
public Idpp(mapp header) {
klappt ebenfalls nicht.
Compiler hat gesagt.:
Code:
cannot find symbol
symbol  : constructor Idpp(mapp)
location: class Idpp
Idpp cms=new Idpp(request);
         ^
1 error
Java:
System.out.println("Mapp.class: "+mapp.class);
kommt folgendes:
JavaVM hat gesagt.:
Mapp.class: class mapp
Gleich mit
Java:
System.out.println(request.getClass());
kommt
JavaVM hat gesagt.:
(Anschliessen strüzt ddas Programm (wie vorhergesehen) in einer NullPointerException ab und der Request kommt nie im Browser an)
Java:
System.out.println(Idpp.getDeclaredConstructors());
läuft ebenfalls beim kompilieren in einen Fehler:
Compiler hat gesagt.:
Code:
cannot find symbol
symbol  : method getDeclaredConstructors()
location: class Idpp
System.out.println(Idpp.getDeclaredConstructors());
                       ^
1 error

EDIT:
Habe gerade auch probiert, einen Default-Konstruktor zu Idpp zu packen, ändert jedoch nichts.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> class mapp
ist was anderes als
class core.mapp

aber wenn auf beiden Seiten die gleiche Ausgabe kommt..,
was kommt bei
System.out.println("OW: "+core.OutputWriter.class);
raus? funktioniert
System.out.println("mapp: "+core.mapp.class);
?

eine Klasse ohne package ist generell suspekt,
was gibts über die mapp-Klasse zu sagen, ist die von dir, hast du den Source-Code im Projekt?
bist du in einer IDE wie Eclipse oder auf der Konsole?
gehts um ein Projekt oder mehrere mit gleichen Libraries?

---

mal ganz was anderes: lege eine neue Klasse core.Test43 an,
garantiert nur einmal an geigneter Stelle,
erstelle eine Konstruktor mit diesem Typ, funktioniert der Aufruf in vergleichbarer Situation?

noch ein Test auf gleiche Klassen: erstelle darin in ein statisches Attribut
> static final double x = Math.random();
gib dieses x bei Aufrufer + Konstruktor aus zusammen mit dem Klassennahmen, dasselbe?

verwende einen Konstruktor mit Parameter Object, übergib dort das request-Objekt,
vergleiche im Konstruktor request.getClass() mit mapp.class

so viele Möglichkeiten, aber eigentlich immer dasselbe ;)
am ehesten hast du irgendwo zwei mapp-Klassen

---

getDeclaredConstructors() ist eine Methode von Class, also z.B. mapp.class.getDeclaredConstructors()
 

Tobse

Top Contributor
Also, ich arbeite mit JCreator unter Win7 (32bit).
Idpp.class.getDelcaredConstructors() gibt mir aus:
JavaVM hat gesagt.:
public Idpp(core.mapp,core.mapp,core.OutputWriter)

Eigentlich ein array, das ist x[0]
Java:
System.out.println("OW: "+core.OutputWriter.class);
System.out.println("mapp: "+core.OutputWriter.class);
gibt, wie erwartet
JavaVM hat gesagt.:
OW: class core.OutputWriter
mapp: class core.OutputWriter

Ja, den code von mapp habe ich:
Java:
package core;
import java.util.ArrayList;
public class mapp {
	private ArrayList<String> keys=new ArrayList<String>();
	private ArrayList<String> values=new ArrayList<String>();
	public void add(String key, String value) {
		this.keys.add(key);
		this.values.add(value);
	}
	public boolean has(String key) {
		return (this.keys.indexOf(key)!=-1);
	}
	public boolean is(int index, String key) {
		return (this.keys.get(index)==key);
	}
	public boolean Vis(int index, String value) {
		return (this.values.get(index).equals(value));
	}
	public boolean Vis(String key, String value) {
		if (this.has(key)) {
		    return (this.get(key).equals(value));
		}
		return false;
	}
	public String get(int index) {
		if (this.values.size()>=index) return this.values.get(index);
		return null;
	}
	public String get(String key) {
		if (this.has(key)) {
			return this.values.get(this.keys.indexOf(key));
		}
		return null;
	}
	public int length() {
		return this.keys.size();
	}
	public String[] toArray() {
		return (String[]) this.values.toArray();
	}
	public String[] keysToArray() {
		return (String[]) this.keys.toArray();
	}
}
Hier mein Test:
Java:
package core;

public class Test34 {
	public Test34(core.mapp x, core.mapp y, core.OutputWriter z) {
	}
	public static void main(String[] args) {
		core.mapp a=new core.mapp();
		a.add("foo", "bar");
		core.mapp b=new core.mapp();
		b.add("bar", "foo");
		core.OutputWriter ow=new core.OutputWriter(System.out);
		new Test34(a, b, ow);
	}
}
lies sich kompilieren und ausführen, problemlos.

EDIT:
Es lag tatsächlich an der Kleinschreibung von "mapp".
Ich habe nun im gesammten Project alle "mapp" mit "Mapp" ersetzt und es lies sich kompilieren ;)
 
Zuletzt bearbeitet:
S

SlaterB

Gast
was soll denn
> System.out.println("mapp: "+core.OutputWriter.class);
bringen?
ich habe den Code doch direkt vorgegeben:
System.out.println("mapp: "+core.mapp.class);

da das package core in deinem Code steht, sollte die Ausgabe "core.mapp" ergeben,
fraglich ist nun
Java:
System.out.println("Mapp.class: "+mapp.class);
kommt folgendes:
Mapp.class: class mapp

Gleich mit
Java:
System.out.println(request.getClass());
kommt
da steht kein "core.mapp", sondern "mapp",
wo finden denn die Ausgaben statt, beide beim Aufrufer vorm Konstruktor-Aufruf?
oder eine direkt im Konstrukor in der Idpp-Klasse wie gefordert?

das mit Test34 meinte ich ganz anders (Parameter im Konstruktor von Idpp), aber ist auch egal,
zurück zu mapp, es verdichten sich die Hinweise, dass es die Klasse doppelt gibt,
benenne die eine um, Großbuchstabe ist eh besser, verwende
> static final double x = Math.random();

und immer bedenken: es geht um zwei Seiten, einmal die Idpp, die core.mapp kennt, und der Aufrufer, der damit nicht klar kommt,
bei allen Tests immer genau darauf achten und am besten dazuschreiben, wo du was ausführst, gleich ganzen Code des Aufrufs + des Konstruktor,
bei den beiden Ausgaben im Quote z.B. ist das wichtig

edit:
ok, jetzt gehts ja (schon), teste ob beim Aufrufer immer noch eine Klasse mapp bekannt ist,
wenn es zwei gab, dann ist die bestimmt immer noch vorhanden,
bei unterschiedlichen package erlaubt Java sowas leider, besonders schlimm wenn man Java-Klassen wie List oder Frame überschreibt..
 
Zuletzt bearbeitet von einem Moderator:

Tobse

Top Contributor
Im Projekt gibts die Klasse mapp nur einmal. Eine zweite war beim aufrufer aber nicht bekannt, denn ich hatte zuerst mapp.java in Mapp.java (und den code) angepasst, da hies es beim compilieren:
Cannot access class mapp ....

System.out.println("mapp: "+core.OutputWriter.class);
Sorry, die eile des Copy&Paste xD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
bueseb84 Java : Cannot find Symbol Allgemeine Java-Themen 7
C Compiler-Fehler Cannot find symbol bei Hat-Beziehungen Allgemeine Java-Themen 5
127.0.0.1 Methodenaufruf -cannot find symbol- Allgemeine Java-Themen 14
D 'InputStreamReader' & 'BufferedReader' führen zu "cannot find symbol"-Fehler Allgemeine Java-Themen 3
B cannot find Symbol Allgemeine Java-Themen 2
D Selenium - cannot find Chrome binary Allgemeine Java-Themen 6
B Cannot find main-claas... Allgemeine Java-Themen 21
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
B Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge> Allgemeine Java-Themen 21
Kirby.exe Cannot make a static reference to the non-static field rimWidth Allgemeine Java-Themen 12
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
A Variablen non-static variable cannot be referenced from a static content Allgemeine Java-Themen 4
Tarrew RMI Java RMI - com.sun.proxy.$Proxy1 cannot be cast to Funktionen Allgemeine Java-Themen 0
A Eclipse - Fehler beim "RUN" - "Unable to Launch - The selection cannot be launched" Allgemeine Java-Themen 6
R Char cannot be derefenrenced? Allgemeine Java-Themen 14
M Cannot create a generic array of T Allgemeine Java-Themen 5
W Threads Cannot make a static reference.. Allgemeine Java-Themen 13
S Cannot make a static reference to the non-static field MySecondClass.Points Allgemeine Java-Themen 3
S Type mismatch: cannot convert from Object to float Allgemeine Java-Themen 3
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
K + cannot be applied Allgemeine Java-Themen 15
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
K java.io.IOException: Cannot validate certificate for jogl.dll Allgemeine Java-Themen 6
Saxony assert cannot be resolved Allgemeine Java-Themen 5
? Cannot run program + Vista Allgemeine Java-Themen 8
X cannot convert from Object[] to Integer[] Allgemeine Java-Themen 2
B aus java heraus kompillierte Klassen - cannot be resolved Allgemeine Java-Themen 3
G [quote]the type HashMap is not generic; it cannot be paramet Allgemeine Java-Themen 4
R cannot be referenced! Allgemeine Java-Themen 18
R Cannot be referenced. Allgemeine Java-Themen 7
G Kompiler Fehler: cannot resolve symbol: class Allgemeine Java-Themen 4
7 Cannot resolve Symbol keyPressed Allgemeine Java-Themen 3
conan2 "Cannot make a static reference to the non-static field Allgemeine Java-Themen 8
A Fehlermeldung: cannot be resolved Allgemeine Java-Themen 5
G warum operator || cannot be applied to int, double Allgemeine Java-Themen 11
D Probleme mit 'cannot execute runjava.bat' Allgemeine Java-Themen 2
G Fehlermeldung "cannot resolve symbol" Allgemeine Java-Themen 7
V Cannot resolve symbol Allgemeine Java-Themen 7
Kirby.exe Union Find Datenstruktur Allgemeine Java-Themen 27
P Find Bugs plugin Allgemeine Java-Themen 2
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
C JNI loadLibary "Can't find dependent libraries" Allgemeine Java-Themen 2
S String mit Matcher.find durchsuchen und ausgeben Allgemeine Java-Themen 7
Phash Can't find Main Class Allgemeine Java-Themen 4
N Runtime.getRuntime().exec Problem mit find Allgemeine Java-Themen 3
S lp_solve mit Java nutzen - Can't find dependent libraries Allgemeine Java-Themen 8
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
C Could not find the main class. Allgemeine Java-Themen 15
nrg Find and replace Text docx Allgemeine Java-Themen 6
A Could not find main class: start Allgemeine Java-Themen 5
hdi Could not find main class? Allgemeine Java-Themen 8
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
N Probleme mit .jar 'Could not find main class' Allgemeine Java-Themen 3
borobudur Find a AWT frame in SWT Allgemeine Java-Themen 4
A Problem mit StringBuilder delete - find den Fehler nicht Allgemeine Java-Themen 9
N Eclipse 3.4(Ganymede) "find references in workspace&quo Allgemeine Java-Themen 4
V JNI Can't find dependent libraries Allgemeine Java-Themen 4
G "Could not find the main class. Program will exit" Allgemeine Java-Themen 20
R Ausführen von *.JAR || "Could not find main class" Allgemeine Java-Themen 7
I "Could not find the main class. Program will exit" Allgemeine Java-Themen 6
B Could not find the main class Allgemeine Java-Themen 2
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
C Symbol für Gaußsche Summenformel in Kommentarzeile darstellen Allgemeine Java-Themen 3
D Symbol in Word-Dokument einfügen Allgemeine Java-Themen 1
M Interpreter-Fehler JNI undefined symbol Allgemeine Java-Themen 1
T JNI UnsatisfiedLinkError ... undefined symbol: __cxa_pure_virtual Allgemeine Java-Themen 10
I Reguläre Ausdrücke und das "~" Symbol Allgemeine Java-Themen 2
H Symbol je Dateiendung? Allgemeine Java-Themen 6
B Symbol in Systray Allgemeine Java-Themen 9

Ähnliche Java Themen


Oben