2013-10-20 53 views
30

我知道,对于经典的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] ^

我在做什么错?

+1

这是Activator中的一个错误:https://github.com/typesafehub/activator/issues/109 –

+0

看起来这个错误只适用于Activator UI,而不是CLI。 –

+0

从Jenkins启动器(不在批处理或Shell构建中)调用activator CLI(1.2.2)时,也会发生此问题。 – rafaelrezend

回答

58

如果你只是在做activator ~run,那么你应该能够通过一个JVM调试端口选项有:

./activator -jvm-debug <port> ~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下运行,自动配置有点不同。随着最新的激活剂,可以做到以下几点:

  1. 打开%UserProfile%\.activator\activatorconfig.txt(该用户配置根据您的Windows安装是不同的煤矿是C:\Documents and Settings\jsuereth一个安装和C:\Users\jsuereth另一个)。过去的文件中的以下内容: -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<PUT YOUR PORT HERE>
  2. 可以开始之前激活,例如设置在命令行上的JAVA_OPTS属性 set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>"

希望有帮助!

+0

没有运气。这会引发一个错误:不是有效的键:jvm-debug – abourg28

+0

你是在windows还是linux?对于Windows而言,这是一个不同的钩子。 – jsuereth

+2

啊!我在窗户上。我应该在Windows上使用什么? – abourg28

4

我有Windows7和激活1.2.12,上面的答案不适合我。相反,我使用项目主文件夹的“activator.bat”命令的“-jvm-debug”选项,并且它工作正常。像这样:

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)内部,我使用了“run”命令。就像这样:

[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

从日食调试,该项目单击鼠标右键,选择“调试方式,调试配置”。在调试配置对话框中,右键单击“远程Java应用程序”并选择“新建”。将端口更改为9999,然后单击“应用”。从现在开始,您可以点击“调试”连接到正在运行的应用程序。

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) 的HotSpot的Java(TM)64位服务器VM(建24.75-B04,混合模式)

4

另一件事是我di scared:

fork in run := false 

fork in Test := false 

in“build.sbt”。

这使您可以调试您的测试,而不仅仅是应用程序本身。

3

借助Play框架2.X:

里面你的项目目录,运行像

activator -jvm-debug 9999 run

一旦该激活器命令完成,调试项目作为远程Java应用程序的IDE内挂钩它与激活过程。

完成此操作后,您将能够在任何地方打破代码。 :)

+0

这对我有效。令人悲伤的是,当Play项目中没有引入激活器时,没有像以前那样的简写符号。 –

相关问题