Java [Gradle; Netbeans; WebApp] Wie mit Breakpoints debuggen?

T

Tersus

Gast
Guten morgen,

ich habe eine simple minimale WebApp mit Gradle erstellt. Ich nutze Jersey und Tomcat. Meine Servlet-Klasse, ansprechbar über /bla/demo, liefert von mir aus "Hello World".

Wenn ich jetzt durch Netbeans ein "gradle debug" mache, erhalte ich natürlich:
"Cannot execute debug because the property "mainClass" is not defined or empty."

Bei einer WebApp habe ich jedoch keine MainClass.

Kann mir jemand helfen?
 
Das ist schon klar. Aber wie schaut der Task in Gradle aus. Gradle verlangt eine MainClass von mir, die es in einer WebApp so nicht gibt.
Und wie kann ich den Debug befehl von Gradle an NetBeans so weiter reichen, dass ich darin debuggen kann?
 
Wenn du deinen Server entsprechend konfiguriert hast, gehst du in Netbeans, wie in meinem zweiten Link beschrieben auf "Debug" und dann "Attach Debugger". Da brauchst du garnix mit Gradle machen solange die Anwendung schon läuft.
 
Noch mal zum Verständnis. Ich habe ein Gradle WebApp Projekt vor mir, dass ich mit NetBeans dank des Gradle Plugins bearbeiten kann. Es ist kein natives NetBeans Projekt.
Entsprechend fehlt auch ein Verzeichnis "nbproject".
Kann das mit dem Debuggen dan trotzdem funktionieren?
 
Es hängt vor allem davon ab, wie du Tomcat nutzt. Ob embedded, per gradle plugin oder standalone (d.h. z.B. dass du das generierte war irgendwohin kopierst). Jedenfalls hat deveth0 ganz recht, mit dem was er schreibt. Der Tomcat muss konfiguriert sein für debugging. Dann ist ein zusätzlicher Port offen und dort attachst du dich mit deiner IDE. In Eclipse nennt sich das in der debug config "remote application".
 
Tumbleweed schrieb:
Es hängt vor allem davon ab, wie du Tomcat nutzt. Ob embedded, per gradle plugin oder standalone (d.h. z.B. dass du das generierte war irgendwohin kopierst).
Standalone und TomCat ist in NetBeans als Server konfiguriert. Die generierte war habe ich nicht kopiert.
Unter <apache-tomcat-xxxx>/conf/Catalina/localhost/ kann man eine XML-Datei anlegen und Catalina somit verraten, wo sie(?) die WebApp findet. In so einer XML habe ich auf meine war verwiesen. Damit muss ich die war nicht jedes mal kopieren.

Tumbleweed schrieb:
Jedenfalls hat deveth0 ganz recht, mit dem was er schreibt. Der Tomcat muss konfiguriert sein für debugging. Dann ist ein zusätzlicher Port offen und dort attachst du dich mit deiner IDE. In Eclipse nennt sich das in der debug config "remote application".
Nun, ich habe TomCat im Debug Modus per NetBeans gestartet. Mein Servlet ist auch ansprechbar. Dann bin ich auf Attach Debugger gegangen und habe folgendes eingerichtet:
scrot.png

Auf der Debugger Console steht:
"Attaching to UX32VD:8080
handshake failed - connection prematurally closed"

Vielleicht habe ich den Server falsch konfiguriert?
 
Ah, nun verstehe ich, wie du arbeitest. Leider kann ich dir auf dem Weg nicht helfen. Von Netbeans habe ich keinen Schimmer und obwohl es das in Eclipse auch gibt, habe ich das so nie benutzt. Aber vielleicht findet sich ja noch jemand mit ähnlichem Workflow.

Edit: mir ist gerade aufgefallen, du hast 8080 als Port konfiguriert. Das ist für gewöhnlich der HTTP Port. Du musst da aber den debug port angeben. Wie auch immer der konfiguriert sein mag in deinem Tomcat (8000, 8008, irgendwas in der Richtung). Kannst ja mal einen Portscan machen, wenn Tomcat läuft.
 
Zuletzt bearbeitet:
Unglaublich, das funktioniert wirklich!

https://wiki.apache.org/tomcat/FAQ/Developing

In der <pfad-zu-tomcat>/bin/catalina.sh einfach die Catalina Variable setzen:
Code:
...
CATALINA_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n'
...

Dann TomCat starten und per Attach Debugger zum Port verbinden. Und tatsächlich lande ich bei meinen Breakpoints, wenn ich die Servlet-Adresse im Browser öffne.
Das hätte ich echt nicht für möglich gehalten. :freak:

Mir ist gar nicht richtig begreiflich, wie das funktionieren kann ..., aber egal! Hauptsache, es funktioniert! :D Schön, dass sich das so schnell lösen ließ.
Am schönsten ist es doch, wenn etwas funktioniert und man nicht weiß, wieso überhaupt.

Habt Dank!
 
Zurück
Oben