【问题标题】:I can't configure Tomcat webapp to be able debugged on Eclipse我无法将 Tomcat webapp 配置为能够在 Eclipse 上进行调试
【发布时间】:2019-01-26 08:21:39
【问题描述】:

我在这里阅读了很多帖子和互联网上的教程,但我无法从我的 Eclipse 连接到我的 Tomcat 上的 web 应用程序以调试我的代码。

根据一些帖子和教程,我已将catalina.bat(我在 Windows 7 上)修改为调试模式:

set _EXECJAVA=%_RUNJAVA%
set MAINCLASS=org.apache.catalina.startup.Bootstrap
set ACTION=jpda start
set SECURITY_POLICY_FILE=
set DEBUG_OPTS=
set JPDA=jpda
set JPDA_TRANSPORT=dt_socket
set JPDA_ADDRESS=8000
set JPDA_SUSPEND=n
set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

if not ""%1"" == ""jpda"" goto noJpda
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_socket
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=8000
:gotJpdaAddress
if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
set JPDA_SUSPEND=n
:gotJpdaSuspend
if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
:gotJpdaOpts
shift
:noJpda

还有:

:doStart
shift
if "%TITLE%" == "" set TITLE=Tomcat
set _EXECJAVA=jpda start "%TITLE%" %_RUNJAVA%
if not ""%1"" == ""-security"" goto execCmd
shift
echo Using Security Manager
set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"
goto execCmd

然后,在 Eclipse 上,我创建了一个安装了 Tomcat 的服务器,并选择了“使用 Tomcat 安装(控制 Tomcat 安装)”:

在服务器上我设置了变量“jpda”:

现在,我按照catalina.bat 上指定的参数创建了一个调试配置:

但是当我通过按下“以调试模式启动服务器”按钮从 Eclipse 运行服务器并尝试连接时,我收到此错误:

我做错了什么?我卡住了……

感谢和问候。

【问题讨论】:

  • 尝试运行服务器,然后将调试器附加到它
  • 我试过了,正常运行服务器并附加调试器并在调试模式下运行服务器并附加调试器,但在这两种情况下我都会收到错误。

标签: java eclipse debugging tomcat web-applications


【解决方案1】:

您不需要安装 Tomcat 和插件。

  1. 创建一个有依赖的maven项目:
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.itranswarp.learnjava</groupId>
    <artifactId>web-embedded-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <java.version>11</java.version>
        <tomcat.version>9.0.26</tomcat.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>${tomcat.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <version>${tomcat.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
  1. 编写 main() 以使用当前 webapp 启动 tomcat:
import java.io.File;

import org.apache.catalina.Context;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;

public class Main {

    public static void main(String[] args) throws Exception {
        Tomcat tomcat = new Tomcat();
        tomcat.setPort(Integer.getInteger("port", 8080));
        tomcat.getConnector();
        Context ctx = tomcat.addWebapp("", new File("src/main/webapp").getAbsolutePath());
        WebResourceRoot resources = new StandardRoot(ctx);
        resources.addPreResources(
                new DirResourceSet(resources, "/WEB-INF/classes", new File("target/classes").getAbsolutePath(), "/"));
        ctx.setResources(resources);
        tomcat.start();
        tomcat.getServer().await();
    }
}
  1. 您可以在 IDE 中设置断点并像普通 Java 应用程序一样进行调试。

【讨论】:

  • 您好,感谢您的回复。很高兴看到另一种方法!
【解决方案2】:

好吧,我真的不知道发生了什么,但我在服务器选项卡上右键单击 > Clean Tomcat Work Directory... 然后我在“以调试模式启动服务器”启动它,现在可以工作了。

我把帖子留给可能有同样问题的人,因为他/她可以在这里通过图片或代码看到所有步骤。

问候。

【讨论】:

    猜你喜欢
    • 2013-02-15
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多