我是App Engine的新手,我正在尝试用Java编写一些示例Web应用程序。我还没弄清楚如何在eclipse中调试java web应用程序项目。
当我启动调试配置时,启动了部分SDK的jetty服务器,我可以从浏览器访问我的页面。但是我的servlet中没有任何断点被击中。我错过了一些调试配置吗?
答案 0 :(得分:4)
假设您已经安装了Google Plugin for Eclipse,那应该是一个简单的问题:
Run menu -> Debug As -> Web Application
这当然在Eclipse调试器内的Web服务器中运行您的应用程序。有关详细信息,请参阅Running the Project。
答案 1 :(得分:1)
检查断点视图中是否选择了“跳过所有断点”选项。
答案 2 :(得分:1)
对于任何尝试使用Eclipse调试Google App Engine但不使用GAE Eclipse插件的人,我在这里写了详细的答案: Dev workflow for app engine + modules + maven
如上所述,这是答案的副本:
我使用的是类似的结构,但差别很小。最高级别 目录有战争和耳朵,然后他们包含他们的具体 pom.xml中。我使用Eclipse进行调试,我可以进行热部署 “大多数时候”我并没有使用Eclipse插件,我(
明白)是你想要的。目录结构
. |-- pom.xml |-- README.md |-- my-ear | |-- devpid | |-- pom.xml | `-- src | `-- main | `-- application | `-- META-INF `-- my-war |-- build | `-- classes | |-- main | | |-- java | | `-- webapp | `-- test | `-- java |-- pom.xml `-- src |-- main | |-- java | | `-- com | `-- webapp | |-- css | |-- favicon.ico | |-- index.html | |-- js | |-- test.html | `-- WEB-INF `-- test `-- java
工具
- 没有Google App Engine插件(或SDK)的Eclipse Luna
- Maven 3.2.1
- Google App Engine SDK 1.9.6
开发工作流程
- 如果您已经拥有源代码,请将其保存在其他位置并使用mvn appengine命令生成骨架。
- 使用maven和terminal以及mvn appengine:devserver命令,使用简单的Hello World运行第一个剪切。
- 完成后,生成eclipse项目。
- 将eclipse项目导入为Maven项目。它将通过Maven看到罐子。我不会在Luna之前根据需要写出这个答案 调整太多了。在Luna中,这会自动生效。
- 上面的步骤将创建三个项目,top level,ear和war,每个项目都有pom.xml - 没关系。
- 在eclipse中,将输出目录提供为war / target目录。这是使热部署成为可能的步骤。
在maven ear / pom.xml中,将xArgs添加到appengine插件以便在调试模式下运行。
<plugin> <groupId>com.google.appengine</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>${appengine.target.version}</version> <configuration> <jvmFlags> <jvmFlag>-Xdebug</jvmFlag> <jvmFlag>-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n</jvmFlag> </jvmFlags> <disableUpdateCheck>true</disableUpdateCheck> </configuration> </plugin>
注意suspend = n。
- 使用来自ear目录的mvn appengine:devserver 从eclipse外部运行app引擎。我用这个命令: `mvn appengine:devserver&gt; 〜/ .logs / .appengine.devserver.logs&amp;回声$!
devpid`让我们称之为终端1.
- 此方法的一个优点是Eclipse不会捕获您的控制台,因此您可以自由使用您选择的工具来查看它,例如 multitail等我用这个简单的tail命令:
tail -f ~/.logs/.appengine.devserver.logs | sed 's/INFO/^[[0;34m&^[[0m/g;s/ERROR/^[[0;31m&^[[0m/g;s/WARN\|WARNING/^[[0;35m&^[[0m/g;s/SEVERE\|FATAL/^[[0;31;47m&^[[0m/g'
以上是难以打字的命令。 ^ [的每个实例 实际上是Ctrl + V Esc - 值得输入一次。但 这当然是主观的,取决于你。- 在Eclipse中,在Remote Java Application下为项目创建调试配置文件 - 选择war项目和套接字附加选项。
醇>
此步骤可在互联网上的许多地方使用,但这是一张图片
- 在war目录中打开另一个终端,即终端2并保持打开状态,以便在需要时运行
mvn compile install
。- 你很高兴。您应该能够通过在适当的位置粘贴源代码来集成它们。你也应该能够 使用标准调试技术。 Eclipse将在右侧编译 location和devserver会检测到它。如果Eclipse抛出一个 警告,忽略它。
- 大部分时间都可以使用。有时,您会保存一些会破坏整个项目编译的内容,或更改函数名称 从预编译的类调用或只是更改web.xml 在启动时加载。当然,热部署不起作用。
- 在这种情况下,请在eclipse中停止删除调试,完成任务,从终端2运行
mvn compile install
。 Devserver将自动检测。- 大多数情况下,我几乎不需要触摸终端1中运行的尾部.Devserver不需要重启。
- 除非我更改web.xml或重构,否则我不需要从外部运行
醇>mvn compile install
。
我给出窗口列表(Eclipse,终端1和终端2)的原因只是为了表明Alt + Tab实际上比 从日食中移位+ F7。这是主观的,当然还有 你。