gpt4 book ai didi

java - 如果它不是 'dynamic web app',如何在 eclipse 中对 Tomcat 运行 WAR?

转载 作者:行者123 更新时间:2023-11-28 22:24:50 25 4
gpt4 key购买 nike

我正在阅读 jwt 教程(这是 Java Web Toolkit,而不是 JSON Web Tokens)。本教程提供了一个 eclipse 项目以下载并导入到 eclipse 中,并提供了在 jetty 服务器上部署它的说明。

我想将它部署在我已经在 eclipse 中作为服务器安装的 tomcat 服务器上,这样我就可以进行更改和重新部署,而无需将 WAR 文件复制到外部 Tomcat 安装并附加远程调试的烦人步骤 session 。

我已经构建了 war 文件,如果我将它部署到外部 session ,它运行良好。但是我不知道如何告诉 eclipse 将它部署到内部服务器。当我右键单击该项目并选择“运行”或“调试”时,有一个将其作为应用程序运行的选项,但没有用于在服务器上运行的选项。我猜测 eclipse 只为“动态 Web 应用程序”提供该选项,但这并没有这样标记,这只是一个猜测。

如何配置项目,以便 eclipse 知道将其 war 文件部署到内部服务器上?

另外 -- 这不是一个 Maven 项目,他们有一个用于 Ant 的 build.xml。


好吧,我找到了“Project Facets”并将我的“hello”应用程序的项目方面设置为“Dynamic Web Module”,现在可以选择在服务器上运行它。但是当我这样做时,我得到 404“没有找到当前资源的表示”,控制台或终端中没有错误消息。我在外部服务器中重试了 WAR 以确保它仍然有效。

有什么建议吗?


教程链接:它是 https://www.webtoolkit.eu/jwt/latest/doc/userguide/userguide.html 的第 3 节

我意识到 Dynamic Web Module 可能是一条错误的道路,但在我们这个反复试验编程的时代,尝试让 eclipse 认为它是一个用于此目的的 web 项目似乎是合理的。如果它不正确,我很乐意(以某种方式)支持它。

他们的说明包括在 eclipse 中为 Jetty 部署,我不使用它。我本以为,如果 tomcat-under-eclipse 需要 index.html 或 web.xml,那么 Jetty-under-eclipse 也需要它,但这只是一个猜测。

最佳答案

在进行以下配置更改后,我设法在 Eclipse 中的 Tomcat 上运行 jwt-hello:

  • 检查Properties > Project Facet > Dynamic Web Module,将版本设置为2.5(这样项目就有资格添加到Tomcat)。我在使用 3.04.0 版本时遇到问题。
  • Properties > Java Compiler > Compiler compliance level设置为1.8
  • 设置Properties > Java Build Path > Libraries > JRE System Library 以使用 JDK 1.8。
  • Properties > Web Project Settings > Context root 设置为 hello,因为它默认为 jwt-hello
  • 将下载的 JWt zip 文件的 dist 文件夹中的 jwt-3.3.11.jar 复制到 WEB-INF/lib
  • 复制slf4j-api-1.6.4.jarslf4j-simple-1.6.4.jarcommons-fileupload-1.3.3.jar 从下载的 JWt zip 文件的 lib 文件夹到 WEB-INF/lib

配置项目后,创建WEB-INF/web.xml,内容如下图,避免404问题,然后build.xml > Run As > Ant Build 构建项目。

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>GreetingServlet</servlet-name>
<servlet-class>eu.webtoolkit.jwt.examples.hello.HelloMain</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GreetingServlet</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping>
</web-app>

在 Eclipse 的 Tomcat 服务器上:

  • 将以下行添加到 server.xml 以反射(reflect)从 jwt-hello 更改为 hello 的上下文根:

    <Context docBase="jwt-hello" path="/hello" reloadable="true" source="org.eclipse.jst.jee.server:jwt-hello"/>
  • jwt-hello 项目添加到Tomcat 并启动它。该应用程序运行正常,日志中没有错误或异常:

    Localhost web app

注意事项:

  • 后来我才意识到 jwt-hello 有一个包含所需 lib 文件的 WebRoot 文件夹,以及一个示例 web.用于 Tomcat 的 xml。和我独立创作的不一样,但我没有进一步研究。
  • 我的环境:Windows 10 上的 Eclipse Photon + JDK 8u152 + Tomcat 9.0.10 + jwt-3.3.11-rc1.zip
  • 我使用 JDK 8 是因为与让 Tomcat 9 与 JDK 10 一起工作的无关问题。

关于java - 如果它不是 'dynamic web app',如何在 eclipse 中对 Tomcat 运行 WAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51655030/

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