2013-10-20 4 views
30

Ich weiß, dass es für das klassische Play-Framework play debug ~run ist. Ich versuchte, läuft activator debug ~run aber ich bekomme die folgende Fehlermeldung:Wie Debuggen Play-Anwendung mit Aktivator?

[error] Not a valid command: debug (similar: idea) 
[error] Not a valid project ID: debug 
[error] Expected ':' (if selecting a configuration) 
[error] Not a valid key: debug (similar: debianSign, node) 
[error] debug 
[error] ^

Was mache ich falsch?

+1

Dies ist ein Fehler in Activator: https://github.com/typesafehub/activator/issues/109 –

+0

Sieht aus wie der Fehler nur für das Activator UI, nicht das CLI ist. –

+0

Das Problem tritt auch beim Aufruf des Aktivator-CLI (1.2.2) aus dem Jenkins-Launcher auf (nicht in einem Batch- oder Shell-Build). – rafaelrezend

Antwort

58

Wenn Sie nur activator ~run tun, dann sollten Sie in der Lage sein, mit einer JVM Debug-Port-Option weitergeben müssen:

./activator -jvm-debug <port> ~run 

Dies kann das Gleiche wie Play-Lauf nicht tun, aber hier ist die Argumente es ist Hinzufügen zu der Befehlszeile:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port> 

Von: https://github.com/typesafehub/activator/blob/master/dist/src/templates/activator#L107

ich erfolgreich angebracht haben dieser Prozess in meiner IDE.

Wenn Sie in Windows laufen, ist die automatische Konfiguration ein bisschen anders. Mit der neuesten Aktivator, können Sie folgendes tun:

  1. öffnen %UserProfile%\.activator\activatorconfig.txt (Die Userprofile unterscheidet sich je nach der Installation von Windows-Mine ist C:\Documents and Settings\jsuereth auf einer Installation und C:\Users\jsuereth auf einem anderen.). Die folgende in der Datei: -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<PUT YOUR PORT HERE>
  2. Sie können die JAVA_OPTS-Eigenschaft in der Befehlszeile vor dem Start Aktivator, z. set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>"

Hoffe, dass hilft!

+0

Kein Glück. Dies wirft einen Fehler auf: Kein gültiger Schlüssel: jvm-debug – abourg28

+0

Sind Sie auf Windows oder Linux? Für Windows ist es ein anderer Haken. – jsuereth

+2

Ah! Ich bin auf Windows. Was soll ich unter Windows benutzen? – abourg28

4

Ich habe windows7 und activator 1.2.12, und die Antworten oben funktionierten nicht für mich. Stattdessen habe ich die Option "-jvm-debug" des Befehls "activator.bat" des Home-Ordners des Projekts verwendet, und es hat funktioniert. Wie folgt:

C:\Projects\MyProject>activator -jvm-debug 
Listening for transport dt_socket at address: 9999 
[info] Loading global plugins from C:\Users\MyAccount\.sbt\0.13\plugins 
[info] Loading project definition from C:\Projects\MyProject\project 
[info] Set current project to MyProject (in build file:/C:/Projects/MyProject/)

Dann, innerhalb des Aktivators (sbt), habe ich den Befehl "run" verwendet. Wie folgt aus:

[MyProject] $ run 

--- (Running the application, auto-reloading is enabled) --- 

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 
'force' enabled 

(Server started, use Ctrl+D to stop and go back to the console...) 

Running "watch" task

Zum Debuggen von Eclipse, der rechten Maustaste auf das Projekt und wählen Sie "Debug As, Debug-Konfigurationen". Klicken Sie im Dialogfeld Debug-Konfigurationen mit der rechten Maustaste auf "Remote-Java-Anwendung" und wählen Sie "Neu". Ändern Sie Port auf 9999 und klicken Sie auf "Anwenden". Von nun an können Sie auf "Debug" klicken, um sich mit der laufenden Anwendung zu verbinden.

0

Ich habe Readrens Lösung versucht, aber mit IntelliJ IDEA Community Edition (also keine integrierte Play-Unterstützung) anstelle von Eclipse.

Dies ist im Grunde die Art, wie es dokumentiert ist, mit dem neuen Typesafe Activator Zeug zu arbeiten (ich verwende 1.3.2). Für mich lief die Anwendung und der IntelliJ-Debugger sah so aus, als würde er eine Verbindung herstellen, aber es würde keine Haltepunkte treffen (auch die Haltepunkte in IntelliJ hatten kein Häkchen, was darauf hinwies, dass sie nicht getroffen werden würden).

Ich versuchte, das DEBUG_OPTS-Setup in der Datei activator.bat zu ändern, um die -agentlib-Form der jdwp-Befehlszeilenargumente zu verwenden, und dies schien es für mich zu beheben.

rem set DEBUG_OPTS=-Xdebug -Xrunjdwp:tnsport=dt_socket,server=y,suspend=n,address=!JPDA_PORT! 
set DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999 

Wahrscheinlich sollte ich das irgendwo in einem activatorconfig.txt setzen, aber verbrachte etwa 4 Stunden versucht, diese Arbeit zu bekommen - so ist es gut genug für mich jetzt ...

Ich verwende den folgenden JVM, falls das wichtig ist:

java version "1.7.0_75" Java (TM) SE Runtime Environment (build 1.7.0_75-b13) Java HotSpot (TM) 64-Bit Server VM (24,75-b04 bauen, gemischter Modus)

4

Eine andere Sache, die ich di ausgegraben:

fork in run := false 

fork in Test := false 

in "build.sbt".

Dies ermöglicht es Ihnen, Ihre Tests zu debuggen, nicht nur die Anwendung selbst.

3

Mit der Play-Framework 2.x:

In Ihrem Projektverzeichnis, wie der Aktivator Befehl ausführen

activator -jvm-debug 9999 run

Sobald dies erledigt ist, debuggen Ihr Projekt als Remote Java Application in Ihrem IDE Haken es mit dem Aktivator-Prozess.

Sobald dies erledigt ist, können Sie Ihren Code überall einbinden. :)

+0

Das hat bei mir funktioniert. Traurig, dass es keine Kurzschreibweise wie früher gibt, als der Aktivator nicht in Play-Projekten eingeführt wurde. –