gpt4 book ai didi

java - 我无法将 Tomcat webapp 配置为能够在 Eclipse 上进行调试

转载 作者:行者123 更新时间:2023-11-28 23:14:38 27 4
gpt4 key购买 nike

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

按照一些帖子和教程,我修改了 catalina.bat(我在 Windows 7 上)以启动 Debug模式:

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 安装)”:

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

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

感谢和问候。

最佳答案

您不需要安装 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 应用程序一样进行调试。

关于java - 我无法将 Tomcat webapp 配置为能够在 Eclipse 上进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51926763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com