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]      ^

我究竟做错了什么?

4

5 回答 5

59

如果您只是在做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 中运行,则自动配置会有所不同。使用最新的激活器,您可以执行以下操作:

  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>"

希望有帮助!

于 2013-10-26T13:11:54.863 回答
4

我有 windows7 和 activator 1.2.12,上面的答案对我不起作用。相反,我使用了项目主文件夹的“activator.bat”命令的“-jvm-debug”选项,它起作用了。像这样:

C:\Projects\MyProject>激活器-jvm-debug
在地址监听传输 dt_socket:9999
[信息] 从 C:\Users\MyAccount\.sbt\0.13\plugins 加载全局插件
[信息] 从 C:\Projects\MyProject\project 加载项目定义
[info] 将当前项目设置为 MyProject(在构建文件中:/C:/Projects/MyProject/)

然后,在激活器 (sbt) 中,我使用了“运行”命令。像这样:

[我的项目] $ 运行

---(运行应用程序,启用自动重新加载)---

[info] play - 在 /0:0:0:0:0:0:0:0:9000 上侦听 HTTP
启用“强制”

(服务器已启动,使用 Ctrl+D 停止并返回控制台...)

运行“监视”任务

要从 Eclipse 中调试,请右键单击项目并选择“Debug As, Debug Configurations”。在“调试配置”对话框中,右键单击“远程 Java 应用程序”并选择“新建”。将端口更改为 9999,然后单击“应用”。从现在开始,您可以单击“调试”以连接到正在运行的应用程序。

于 2015-03-08T18:10:07.983 回答
4

我发现的另一件事:

fork in run := false

fork in Test := false

在“build.sbt”中。

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

于 2015-07-20T09:54:54.720 回答
4

使用 Play 框架 2.x:

在您的项目目录中,运行 activator 命令,例如

激活器-jvm-debug 9999 运行

完成此操作后,在 IDE 中将您的项目作为远程 Java 应用程序进行调试,以将其与激活器进程挂钩。

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

于 2016-02-20T00:18:19.507 回答
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 Runtime Environment (build 1.7.0_75-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, 混合模式)

于 2015-04-25T22:53:40.287 回答