Der Typ von <Klasse> ist fehlerhaft Fehler in netbeans
Ich habe zwei Klassen für ein java-Programm, das ich Schreibe, rufen Sie Class1 und Class2. Im Körper des Konstruktors für Klasse1, rufe ich den Konstruktor für die Klasse 2. Allerdings bin ich immer der compile-Fehler
"The type of Class1(JSONObject) is erroneous".
Ich habe versucht, googeln dieser Fehler konnte aber nicht finden, jede Diskussion über genau dieses Fehler überall, so dass ich dachte, ich würde post es zu stack exchange.
Könnte jemand bitte erklären, welche Art von Fehler es sich handelt? Beide class1 und class2 sind sehr einfach: beide haben nur einen Konstruktor-Methode, die dauert ein JSONObject als argument in beiden Fällen. Die einzigen Importe sind für JSON. Irgendwelche Ratschläge?
//class1 definition
public class Class1 {
public Class1(JSONObject jObject){
try{
//parsing json and saving class variables
} catch(Exception e)
{
System.out.println("Class1 JSON Exception: " + e.getMessage());
}
}
}
//constructor of Class2
Class1 user;
public Class2(JSONObject jObject){
try{
JSONObject userJSON = jObject.getJSONObject("user");
user = new Class1(userJSON); //error occurrs here
}
catch(Exception e){
System.out.println("Class2 JSON Exception: " + e.getMessage());
}
}
}
EDIT: wenn ich versuche den code auszuführen, der auch mit diesem kompilieren Fehler, bekomme ich folgenden Laufzeitfehler:
Exception in thread "main" java.lang.ExceptionInInitializerError
at bitcoin.thesis.Client.main(BTCJamClient.java:18)
Caused by: java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:
thesis.JSONArray
at thesis.Class3.<clinit>(Class3.java)
... 1 more
Java Result: 1
Class3 hier ist eine Klasse, die einen default-Konstruktor. Client ist die Hauptklasse, die die http-Anfrage und gibt das JSON-Objekt auf Class2-Konstruktor. Im Grunde ist dies der Teil, der die Ausführung von code vor Class1 und Class2-Konstruktoren sind auch aufgerufen. So ist es nicht, die direkt von der compile error, aber ich vermute, Sie sind mit dem gleichen problem, das tun Sie generell mit meiner Codierung-Umgebung.
Dank,
Paul
- Poste deinen aktuellen code.
- Vielleicht haben Sie etwas verändert und gespeichert wird, aber die Klassen nicht generiert. konfigurieren
Compile On Save
- 1) Poste die genaue Fehlermeldung (copy/paste, der eigentliche text, 2) Poste den code mit der Zeile, gab den Fehler zu. 3) Post alle zugehörigen code vor die Zeile.
- Vielen Dank an alle. Ich dachte, dass diese Art von Fehler kann etwas, das nichts mit dem code, wie das, was Braj vorgeschlagen. Aber ich poste den relevanten code.
- auch "compile on save" eingeschaltet ist.
- Was ist
userJSON
und wo hast du es definieren? - Sorry, ich versehentlich gelöscht, die Zeile. Es kommt aus dem JSONObject übergeben wird, in den Konstruktor von Class2. Jetzt ist es aktualisiert.
- Hi, meist jObject.getJSONObject("user"); gibt null zurück, und die nächste Zeile geht null auf Class1 Konstruktor , user = new Class1(userJSON); und diesem Class1-Konstruktor erwartet json, erhält aber eine null kann ein Problem sein,..nicht ganz sicher, überprüfen Sie es einmal
- Hi Karibasappa, vielen Dank für Ihre Beratung. Die Sache ist, dass ich kann nicht einmal auf, dass ein Teil von meinem code. Die Fehler, die ich mich beziehe, ist eine compile-Zeit-Fehler. Ich gepostet, mehr details über das, was geschieht, wenn ich versuche zu laufen, in ein edit oben.
- Niemand hat eine Ahnung was dieser Fehler bedeutet? auch im Allgemeinen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde bevorzugt haben, lassen Sie diese als Kommentar, aber wie ich nicht das ansehen konnte ich nicht. Ich weiß, dass es auch eine sehr späte Antwort aber nicht wissen, ob Sie haben die Antwort gefunden, oder nicht. Ich kam in dieses, während googeln für eine Antwort mir.
Ich glaube auch, dass dieser Fehler nicht der code, sondern ist eher ein Fehler erstellt von NetBeans. Ich fand den gleichen code kompiliert und lief fein in NetBeans auf einer Maschine, aber nicht die auf der anderen, wo ich zum ersten mal mit dem Fehler.
Die Lösung für mich war, zu schließen, NetBeans, deaktivieren Sie die NetBeans-cache und starten Sie NetBeans.
Ich war mit der version 8.0 und den Speicherort des Caches für mich ist:
~/.cache/netbeans/8.0/
Hab ich alles gelöscht im Ordner und bei der nächsten Fahrt war alles in Ordnung.
Für ältere Versionen glaube ich, dass der cache möglicherweise in einem anderen Speicherort gefunden werden kann durch öffnen der Fenster aus dem Hilfe-Menü.
C:\Users\USER_NAME\AppData\Local\NetBeans\Cache
Stellen Sie sicher, dass Sie eingegeben haben, korrigieren Paket-Namen in Ihre Klassen.
Ich hatte das gleiche Problem und die Lösung war sehr einfach in meinem Fall.
Fall:
Ich copy/paste einige Klassen aus einem anderen Projekt in ein Paket von der Projekt arbeite ich an.
Einige von Ihnen hatten das alte package-Deklaration und dem compiler nicht beschwert (für seine Gründe).
Wenn ich eine Methode mit Rückgabetyp einer der "falsch verpackt" Klassen dieser Fehler erschien.
(Der Typ ist fehlerhaft)
Lösung
Zu lösen das Problem, ich habe die package-Deklaration der richtige zu sein!
Hatte ich das gleiche Problem auf netbeans 8.0. Der folgende trick sollte es fix:
Rechtsklick auf das Projekt -> Eigenschaften -> erstellen -> kompilieren ==> das Häkchen bei "compile on save", klicken Sie dann auf ok
Ich habe das gleiche Problem und behoben, die mit der erwünschten Antwort, da bin ich mit windows 10 also hier ist der cache-Ordner:
AppData ist ein versteckter Ordner.
Stand ich vor diesem Problem. Ich löste es, indem Sie alle abhängigen jar-Dateien zum Projekt/Datei
Fett Antwort wieder löschen den Inhalt der netbeans-cache arbeitet. Ich bin mit Netbeans 8.1 auf MacOS Sierra.
Alles gelöscht, was unter "/Users//Library/Caches/NetBeans/8.1/"