在 Eclipse 中调试 Playframework
Posted
技术标签:
【中文标题】在 Eclipse 中调试 Playframework【英文标题】:Debug Playframework in Eclipse 【发布时间】:2011-11-02 13:47:54 【问题描述】:我刚从 Netbeans 转到 Eclipse。在 Netbeans 中,我可以开箱即用地调试 Playframework 应用程序。但是,在 Eclipse 中,似乎很难配置它以调试 Web 应用程序(特别是 Playframework 应用程序)。
就像在 Play 中一样!文档,
主启动器只能与 Run As eclipse 命令一起使用。你 然后可以通过“Debug As”使用“Connect JPDA启动器”来启动一个 随时调试会话。停止调试会话不会 停止服务器。
但是,我在“调试为”中看不到“连接 JPDA 启动器”(我使用的是 Eclipse Classic 3.7.0)。 我搜索过 JPDA(我是 Java 新手,不了解“主启动器”和 JPDA,然后按照 instruct 中的说明配置远程调试 http://javarevisited.blogspot.com/2011/02/how-to-setup-remote-debugging-in.html 但它返回一个错误:
无法连接到远程虚拟机。拒绝连接。联系 拒绝:连接
我已经搜索并找到了一些建议,例如:
1.) 编辑 catalina.bat 并添加行:set JPDA_TRANSPORT=dt_socket ... 设置 JPDA_ADDRESS=8000 和 2.)编辑startup.bat call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
这个其实我也不是很清楚,估计是为了配置Tomcat。但是,我正在使用 Play!默认服务器,检查 application.conf 并确保它正在侦听 JPDA 的端口 9000 和 8000。
当然,我在调试之前已经启动了Play应用,可以通过9000端口正常访问应用。我使用的是没有管理员权限的 Win 7。
您有调试 Play 的详细指南吗?在 Eclipse 中?
【问题讨论】:
【参考方案1】:我猜你们中的大多数人都在使用 Typesafe Activator 运行游戏框架。如果您这样做,这可能会对您有所帮助,
激活器-jvm-debug ~run
点赞:activator -jvm-debug 9999 ~run
(那么它将在 9999 端口启动调试器,同时应用程序在 9000 端口运行。)
-
现在转到 Eclipse 并右键单击要调试的项目名称并选择 Debug As -> Debug configuration.. -> (select)Remote Java Application -> new (左上角带有小加号的图标)-> 连接指定端口 9999 并进行调试。
【讨论】:
我已经执行了与您所说的相同的步骤来调试它,但仍然无法从 Eclipse 中调试它。请帮帮我... 它应该可以工作。您的控制台是否显示 9999 端口处于活动状态?您是否为调试固定了任何线路?按照你所遵循的步骤写信给我。或通过屏幕截图给我发电子邮件。 和 Keyur 一样的东西……太让人抓狂了。我可以看到它连接我可以添加断点,甚至可以在我看到输出的地方放置愚蠢的日志语句,但它只是跳过任何断点......【参考方案2】:使用激活器,您需要activator -jvm-debug <port number> ~run
【讨论】:
你能提供更多细节吗?使用端口 9999 运行此命令后。我收到此消息“在地址侦听传输 dt_socket:9999”但我无法将 eclipse 调试器与它连接。我收到“无法连接到远程 VM。连接被拒绝。连接被拒绝”错误。谢谢! 我不再安装 Eclipse,所以帮不了你。你可以试试这个:jdb -attach <port_no>
看看它是否连接?如果是这样,但 eclipse 没有,那么请确保您遵循http://***.com/a/10257101/247077
中的其余步骤@【参考方案3】:
从 Play 2.1.2 开始,我在运行 play debug run 时收到“正在使用的地址”错误。
修复方法是编辑 play-2.1.2 目录中的 play.bat 并更改这两行:
:setDebug
set JPDA_PORT=9999
到
:setDebug
set JPDA_PORT=8551
然后在Eclipse中,选择Debug Configurations,找到“Remote Java Application”,新建。然后将端口设置为 8551。现在您可以开始使用
play debug run
然后在 Eclipse 中使用您创建的调试配置开始调试。
【讨论】:
【参考方案4】:播放 2.1-RC2: 运行播放!与 Eclipse 同步的应用程序
为了使项目 Eclipse 兼容,得到他的项目文件夹,然后给出命令 ">播放日食"。现在您可以将其添加为 eclipse 的现有项目。
然后要运行它,您必须首先在项目文件夹中运行 start play 即命令“play”
这将激活播放服务器并识别项目中的应用程序,即 [appname]$ 现在您只需发出命令“运行”即可查看您的应用程序在 localhost:9000 或您指定的任何端口配置上运行。
调试模式: 要以类似方式运行此程序,您需要先给出命令“play”,然后 [appname]$“play debug run” 这将默认使用端口 9999,因此当您在浏览器和 Eclipse 文件中转到 localhost:9000 -> 调试为 -> 调试配置.. -> 新建远程 Java 应用程序 -> 连接指定端口 9999 并进行调试
【讨论】:
【参考方案5】:从 Play 2.0 开始,当您运行 play eclipsify
时,将不再生成 eclipse
文件夹和启动器。运行play eclipsify
后,你可以在Eclipse中调试你的项目,如下:
-
在 Eclipse 之外的控制台中,运行
play debug run
。
在 Eclipse 中,右键单击您的项目,然后选择 Debug As -> Debug Configurations...
右键单击Remote Java Application
,然后单击New
。
主机应该已经设置为localhost
。将端口设置为9999
(play debug run
命令使用的默认端口)。
点击Apply
保存,然后点击Debug
连接到您正在运行的 Play 实例。
【讨论】:
既然不再生成 eclipse 文件夹,您如何从 Eclipse 运行测试?【参考方案6】:如果您在项目文件夹上运行“play eclipsify”,它将创建两个运行配置。 查看运行配置详细信息,您应该检查以下行(或类似内容)是否在“VM 参数”中:
-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
-Dplay.debug=yes
-Dplay.id=test -Dapplication.path="$project_loc:NMKServer"
-Djava.endorsed.dirs="c:\Java\play-1.2.2/framework/endorsed"
-javaagent:"c:\Java\play-1.2.2/framework/play-1.2.2.jar"
这里可以配置调试端口。使用此配置,我可以使用您的说明附加到进程。
【讨论】:
【参考方案7】:首先,您已经使用play eclipsify YourProject
命令为Eclipse 创建了配置文件,对吧? (如果没有,请参阅Play framework documentation 了解更多信息。)
之后,您的项目中应该有一个名为 eclipse
的文件夹。在其中,您应该会看到命令Connect JDPA to YourProject.launch
、YourProject.launch
和Test YourProject.launch
。
右键单击YourProject.launch
,然后从弹出菜单中选择Run As --> YourProject
。这将启动您的应用程序。当应用程序运行时,右键单击Connect JDPA to YourProject.launch
,然后从弹出菜单中选择Debug As --> Connect JDPA to YourProject.launch
。这将在您的应用程序上启动一个调试会话。
【讨论】:
有时这会造成麻烦,因为使用了端口。见play.lighthouseapp.com/projects/57987/tickets/… 另外,谈论第 1 步,而不是从 Eclipse 内部启动应用程序,您可以只从命令行启动它,例如play test
(因为在DEV
模式下始终启用调试)。这样它总是使用您现有的配置,否则您需要为不同的端口和/或数据库修改生成的“.launch”文件。以上是关于在 Eclipse 中调试 Playframework的主要内容,如果未能解决你的问题,请参考以下文章