Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在eclipse中调试WAR应用程序?_Java_Eclipse - Fatal编程技术网

Java 如何在eclipse中调试WAR应用程序?

Java 如何在eclipse中调试WAR应用程序?,java,eclipse,Java,Eclipse,我看过很多在线教程,解释了如何使用eclipse对WAR文件进行远程调试 但我想知道的是,如何在eclipse内部进行调试,就像调试JAVA应用程序一样?我在eclipse中将Tomcat7配置为服务器。我已经用一个示例servlet程序成功地测试了它,这意味着我可以在源代码中设置断点并运行到其中 我的WAR应用程序是由gradle创建的。我已经将gradle项目导入到我的eclipse中,并通过在“gradletasks视图”中运行gradletask在eclipse中构建它。我将项目添加到服

我看过很多在线教程,解释了如何使用eclipse对WAR文件进行远程调试

但我想知道的是,如何在eclipse内部进行调试,就像调试JAVA应用程序一样?我在eclipse中将Tomcat7配置为服务器。我已经用一个示例servlet程序成功地测试了它,这意味着我可以在源代码中设置断点并运行到其中


我的WAR应用程序是由gradle创建的。我已经将gradle项目导入到我的eclipse中,并通过在“gradletasks视图”中运行gradletask在eclipse中构建它。我将项目添加到服务器中。然而,当我尝试在服务器上使用“Debug as>Debug”时,它失败了,断点没有命中。任何人都可以分享在eclipse中调试WAR的经验?

在调试之前,必须使用jd gui对WAR文件中的打开类文件进行反编译并另存为java项目。

在“服务器”视图中,选择右侧的tomcat服务器概览,然后进入“模块”选项卡

在那里,您可以通过单击“添加外部Web模块…”来添加war

在“文档库”中设置war路径,并在“路径”字段中设置所需的内容

例如:

文档库:“C:\eclipse workspace\MyProject\war\myWarToDebug.war”

路径:“/myapp”

以调试模式启动服务器。使用url访问您的应用程序
:/


注意,当到达断点时,Eclipse可能会说找不到任何源。只需继续服务器调试配置并在“源”选项卡中添加项目源。

我是IntelliJ Idea的用户,但我这里有一个通用建议。您可以做的是,您可以在上使用调试端口运行应用程序(war/jar等),然后从eclipse使用远程调试(或附加到进程类选项)


确保您拥有创建war/jar的代码的精确副本,否则在调试时,行可能会不匹配,很难理解。

如果他有gradle项目,您不认为他已经有了源代码吗?嗯。。。。你能详细说明一下这种方法的细节吗?反编译意味着什么?什么是JDGUI?我曾经尝试使用jar命令来解包WAR,并且能够看到所有这些类文件。以及如何将war文件中的类文件保存为java项目?您的答案基于假设。询问OP是否将其设置配置为具有可用源代码,这将是一个“OK”注释。但是为这样的建议写一个“答案”绝对是不值得的。@MaxLi当你想调试一个应用程序时,调试器(在你的例子中是eclipse)需要访问源代码。但这里给出的建议是荒谬的。您应该为您正在使用的组件获取官方源代码包。当你使用像gradle这样的构建系统时,你几乎已经免费得到了。使用像jd这样的工具将类文件转换回源代码来解决这个问题的想法是非常荒谬的。同样的问题已经存在,你可能会提到你提供的链接是关于远程调试的,不是吗?在我的问题中,我特别说过,我想知道是否有一种方法可以不以“远程”的方式调试WAR…如果你不同意一个接近的。。。只需在评论中使用@userid联系关闭的人。我认为另一个答案还包括“本地”使用的建议。在“服务器”视图中右键单击服务器,我没有看到名为“概述”的菜单项?@MaxLi双击“服务器”视图中的服务器,我找到了它。我在中添加了战争的路径。然而,我的WAR是一个Spring应用程序。我在调试模式下启动了Tomcat,从控制台上看不到正常的Spring启动屏幕。即使在我输入之后,我在控制台中也没有看到任何事情发生。所以我猜Tomcat根本就没有发动我的战争?