2016-03-28 10 views
0

Ich benutze ein Java-Web-Framework (Vraptor) und ich habe das folgende Problem: Die Frameworks verwendet Reflection, um die Controller-Parameter zu instanziieren, und aus irgendeinem Grund einer der Parameter kehrt zurück <java.lang.NullPointerException>.getDeclaredConstructors() return java.lang.NullPointerException

Meine Frage ist: das Framework funktioniert normalerweise eine Weile, und aus irgendeinem Grund wird der "cachedConstructor" des Typs, den ich instanziieren möchte, mit <java.lang.NullPointerException> gefüllt, statt was erwartet wird. Was könnte diese Veränderung bewirken?

Ich frage nicht, ob der Rahmen dies tut, ich will nur wissen, was dies in Java tun könnte

getClassType().getDeclaredConstructors() is return java.lang.NullPointerException (returning, not throwing) 

Antwort

1

Wahrscheinlich getClassType() wird einen Nullwert zurück. Wenn Sie über Ihren Code debuggen und eine Konsolenausgabe für Werte erstellen, sehen Sie, welcher Wert als Null zurückkommt. Führen Sie vor der Verwendung eines Objekts ggf. eine Nullwertüberprüfung durch.

Siehe What is a NullPointerException, and how do I fix it?

+0

Die Sache ist, ich kann nicht überprüft tun, denn dies ist ein interner Code des Rahmens ist. getClassType() gibt nicht null zurück, getDeclaredConstructors ist return java.lang.NullPointerException (nicht null) –

+0

Ja, weil der Klassentyp fast sicher null ist. Oder etwas in der getDeclaredConstructors() -Methode gibt null zurück. Wahrscheinlicher ist jedoch, dass die Methode getClassType() eine Null zurückgibt. Das bedeutet, dass Sie versuchen, DeclaredConstructors() auf eine Null zu setzen, wodurch die NullPointerException ausgelöst wird. Ohne mehr von Ihrem Code zu sehen, ist es schwierig zu sagen, woher diese Null kommt. Was geben Sie in diesen "Framework" -Code, der danach versucht, eine Klasse/Konstruktoren zu bekommen? Es kann sich um einen Tippfehler in einem Klassennamen oder etwas in Ihrem Klassenpfad befinden. – ManoDestra

+0

Ich weiß, dass dies verwechseln kann, aber der Aufruf getDeclaredConstructors wirft keine Erwartung auf, wie ich schon sagte, getClassType gibt den erwarteten Typ zurück, aber getDeclaredConstructors gibt return java.lang.NullPointerException zurück (nicht werfen), als ob es zurückgeben würde Konstruktor für die Expectation (oder so ähnlich) –

Verwandte Themen