我知道,对于经典的Play框架,它是play debug ~run
。我尝试运行activator debug ~run
但是我收到以下错误:
[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] ^
我做错了什么?
答案 0 :(得分:58)
如果您刚刚执行activator ~run
,那么您应该能够通过以下方式传递JVM调试端口选项:
./activator -jvm-debug <port> ~run
这可能与play-run不同,但这里是它添加到命令行的参数:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>
自: https://github.com/typesafehub/activator/blob/master/dist/src/templates/activator#L107
我已经在IDE中成功附加到此过程。
如果您在Windows中运行,则自动配置会有所不同。使用最新的激活器,您可以执行以下操作:
%UserProfile%\.activator\activatorconfig.txt
(根据您的Windows安装,UserProfile会有所不同。我在一次安装时为C:\Documents and Settings\jsuereth
,在另一次安装时为C:\Users\jsuereth
。过去文件中的以下内容:
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<PUT YOUR PORT HERE>
set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>"
希望有所帮助!
答案 1 :(得分:4)
我有windows7和激活器1.2.12,上面的答案对我不起作用。相反,我使用了&#34; -jvm-debug&#34; &#34; activator.bat&#34;的选项项目主文件夹的命令,它工作。像这样:
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/)
然后,在激活器(sbt)内,我使用&#34;运行&#34;命令。像这样:
[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
要从eclipse调试,右键单击该项目并选择&#34; Debug As,Debug Configurations&#34;。在Debug Configurations对话框中,右键单击&#34; Remote Java Application&#34;并选择&#34; New&#34;。将端口更改为9999并单击&#34;应用&#34;。从现在开始,您可以点击&#34; Debug&#34;连接到正在运行的应用程序。
答案 2 :(得分:4)
我发现了另一件事:
fork in run := false
fork in Test := false
“build.sbt”中的。
这使您可以调试测试,而不仅仅是应用程序本身。
答案 3 :(得分:4)
使用Play framework 2.x:
在项目目录中,运行激活器命令,如
activator -jvm-debug 9999 run
完成此操作后,在IDE中将项目调试为远程Java应用程序,以将其与激活器进程挂钩。
完成此操作后,您就可以在任何地方打破代码。 :)
答案 4 :(得分:0)
我尝试使用Readren的解决方案但使用IntelliJ IDEA社区版(因此没有内置的Play支持)而不是Eclipse。
这基本上是记录使用新Typesafe Activator的方式(我使用的是1.3.2)。对我来说,应用程序运行并且IntelliJ调试器看起来像它正在连接但它不会打到任何断点(IntelliJ中的断点也没有刻度标记表明它们不会被击中)。
我尝试更改activator.bat文件中的DEBUG_OPTS设置以使用jdwp命令行参数的-agentlib形式,这似乎为我解决了这个问题。
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
可能我应该将它放在某个地方的activatorconfig.txt中,但是花了大约4个小时试图让它工作 - 所以现在对我来说已经足够了......
我正在使用以下JVM以防万一:
java版“1.7.0_75” Java(TM)SE运行时环境(版本1.7.0_75-b13) Java HotSpot(TM)64位服务器VM(内置24.75-b04,混合模式)