如果它不是“动态Web应用程序”,如何在Eclipse中在Tomcat上运行WAR?

时间:2018-08-02 13:33:50

标签: java eclipse tomcat

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

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

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

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

而且-这不是Maven项目,它们具有Ant的build.xml。


好吧,我找到了“ Project Facets”并将“ hello”应用程序的项目facet设置为“ 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需要它,但这只是一个猜测。

1 个答案:

答案 0 :(得分:0)

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

  • 检查属性>项目构面>动态Web模块,将版本设置为 2.5 (以便该项目可以添加到Tomcat中)。我在使用版本 3.0 4.0 时遇到问题。
  • 属性> Java编译器>编译器遵从性级别设置为 1.8
  • 设置属性> Java构建路径>库> JRE系统库以使用JDK 1.8。
  • 属性> Web项目设置>上下文根设置为 hello ,因为默认情况下为 jwt-hello
  • 从下载的JWt zip文件的 dist 文件夹中将 jwt-3.3.11.jar 复制到 WEB-INF / lib 。 / li>
  • 复制 slf4j-api-1.6.4.jar slf4j-simple-1.6.4.jar commons-fileupload-1.3.3.jar 从下载的JWt zip文件的 lib 文件夹中移至 WEB-INF / lib

配置项目后,使用如下所示的内容创建 WEB-INF / web.xml 以避免404问题,然后 build.xml>运行方式> Ant构建构建项目。

    <?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 ,以反映上下文根已从 jwt-hello 更改为 hello :< / p>

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

    Localhost web app

注意:

  • 之后,我才意识到 jwt-hello 有一个 WebRoot 文件夹,其中包含必需的 lib 文件和一个示例 web。 xml (对于Tomcat)。它不同于我独立创建的那个,但是我没有进一步研究。
  • 我的环境:Windows 10上的Eclipse Photon + JDK 8u152 + Tomcat 9.0.10 + jwt-3.3.11-rc1.zip
  • 由于使用Tomcat 9与 JDK 10 无关的问题,我使用了 JDK 8