Wie kann ich eine JSP debuggen?

26

Ich versuche eine JSP für ein Projekt zu bearbeiten und erhalte irgendwo in der JSP eine NullPointerException, wenn sie von meinem Server angefordert wird.

Mein Webserver (JBoss) meldet die Ausnahme, gibt mir jedoch eine falsche Zeilennummer. Es wird berichtet, dass die Ausnahme in Zeile 702 aufgetreten ist, aber meine JSP ist nur 146 Zeilen lang, sodass ich nicht identifizieren kann, welche Zeile erstickt.

Was sind einige gute Techniken zum Debuggen von Fehlern in JSPs? Ich verwende IntelliJ 9 Ultimate als meine IDE.

Vielen Dank

kaufmännisches
quelle
1
kann auf Stackoverflow.com
Abimaran Kugathasan
1
Okay. Leider ist mir der Unterschied zwischen StackOverflow.com und Programmers.StackExchange.com nicht ganz klar. Ich bin nicht sicher, welche Fragen wohin gehören. Ich habe die FAQ für Programmierer gelesen. Stackexchange, aber es ist ein wenig vage.
Ampersandre
3
Eigentlich bin ich mir nicht sicher, ob das bei Stack Overflow in Ordnung wäre. Obwohl es ziemlich spezifisch ist, gibt es nicht genug konkrete Details (aufgrund der Art des Problems). Was Sie suchen, sind Debugging-Techniken, die für diese Site zum Thema gehören sollten.
ChrisF
Haben Sie JSPs in Ihre JSP aufgenommen? So kann sich die Zeilennummer erhöhen. Die Frage muss zum Stackoverflow verschoben werden
minusSeven
Eine Technik sieht kompilierte Dateien: codeinventions.blogspot.com/2014/08/…
Suresh Atta

Antworten:

29

Es gibt verschiedene Möglichkeiten, die Ihnen helfen können:

  1. In dieser Antwort wird das Debuggen von JSPs speziell erläutert: https://stackoverflow.com/questions/33739/jsp-debugging-in-intellij-idea . Ich habe das noch nie ausprobiert, also habe ich die nächsten drei Vorschläge befolgt, als ich JSP, JBoss und IntelliJ verwendet habe ...

  2. Denken Sie daran, dass JSPs zu Klassen kompiliert werden. Wenn es Zeile 702 sagt, bedeutet es in der kompilierten Klasse. Wenn dies test.jspder Fall ist test_jsp, lautet der Klassenname wahrscheinlich . Öffnen Sie daher Ihr JBoss-Arbeitsverzeichnis und suchen Sie nach test_jsp.java(sobald Sie das richtige Verzeichnis gefunden haben, sehen Sie, dass die Verzeichnisstruktur mit Ihrer JSP-Verzeichnisstruktur übereinstimmt). Wann immer ich eine JSP-Ausnahme hatte, konnte ich die Zeile ziemlich leicht finden und normalerweise mit der entsprechenden Zeile in der JSP abgleichen.

  3. Haltepunkte funktionieren problemlos in Java-Klassen, die von einer JSP aufgerufen werden . Vielleicht können Sie den Java-Skriptcode, den Sie in Ihrer JSP haben, in eine Klasse verschieben und vom Einstiegspunkt aus debuggen. In Zukunft können Sie es sich auch zur Gewohnheit machen, Ihre Logik so umzustellen, dass der Großteil in einer Klasse liegt, die von der JSP aufgerufen wird. Die JSP ist einfach, unkompliziert und wirft hoffentlich keine Ausnahmen. Das ist sowieso eine gute Übung.

  4. Besser noch, entfernen Sie die gesamte (oder praktisch die gesamte) Java-Logik in Java-Klassen, und belassen Sie JSPs für HTML- und JSP-Tags. Ich weiß, dass dies nicht sofort machbar ist, aber es ist auch langfristig eine gute Idee, solche Probleme zu vermeiden.

Nicole
quelle
2
+1 zum Entfernen der Logik aus der JSP. Weitere Informationen
bunglestink
Vielen Dank! Option 4 ist ideal, da stimme ich zu, aber wir haben keine gute Sicht- / Controller-Trennung in diesem Projekt.
Ampersandre
1
Auch +1 für Artikel # 2. Ich hatte keine Ahnung, wo ich den *_jsp.javaUnterricht finden sollte.
Scottyseus
2
Entfernen der gesamten Logik aus JSPs in einem Projekt mit Tausenden von JSPs, die jeweils mehrere Tausend Zeilen Scriptlets enthalten. Nein, danke, Sie möchten nur die Hashtables und Vektoren debuggen. FML :-( </ rant> nette Antwort aber
Peter Perháč
-1

Sie können eine JSP-Seite einfach wie einen Java-Code debuggen:
"Eine JSP-Datei ist dasselbe wie das Debuggen einer Java-Klasse, aber die meisten Funktionen (Beobachten, Untersuchen usw.) sind nicht implementiert. Der einzige Weg, die Werte von Variablen zu erhalten ist die Variablenansicht. "
Siehe den Link unten:
https://www.laliluna.de/articles/posts/debugging-jsp-java-tutorial.html

Shadab
quelle
4
Wenn Sie eine ältere Frage beantworten, die bereits eine gute Antwort erhalten hat, fügen Sie Ihrer Antwort weitere Details hinzu, damit Sie etwas ansprechen, das noch nicht behandelt wurde.
gnat