繁体   English   中英

带有 Tomcat 插件的简单 Gradle 项目不起作用

[英]Simple Gradle project with Tomcat plugin doesn't work

我有以下问题 - 我使用com.bmuschko.tomcat插件创建了一个名为“spring”的简单 Gradle 项目。 但是当我运行 Gradle build 和tomcatRun任务并输入http://localhost:8080/spring 时,我收到 404 错误。 当然,在构建和服务器启动期间我没有收到错误消息。 有 build.gradle:

apply plugin: 'com.bmuschko.tomcat'
apply plugin: 'java'
apply plugin: 'war'

group 'training'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'

    def tomcatVersion = '9.0.17'
    tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
            "org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6",
            "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}

tomcat {
    httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
    ajpProtocol  = 'org.apache.coyote.ajp.AjpNio2Protocol'
}

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.bmuschko:gradle-tomcat-plugin:2.5'
    }
}

我还有一个名为hello.jsp jsp 文件放在src/main/webapp

<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">

<title>Hello Gradle Web App</title>
</head>
<body>

<jsp:useBean id="greeting" class="test.Test"/>

<h3>${greeting.hello}</h3>

</body>
</html>

Test.java文件放在src/main/java/test

package test;

public class Test {
    public String getHello() {
        return "Hello Spring!";
    }
}

如您所见,服务器似乎已成功启动:

17:46:12: Executing tasks 'build tomcatRun'...

> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :war UP-TO-DATE
> Task :assemble UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build UP-TO-DATE
> Task :tomcatRun
Started Tomcat Server
The Server is running at http://localhost:8080/spring

正如评论中指出的,您的 JSP 文件名为hello.jsp

Tomcat 文档 ( conf/web.xml ) 声明如下:

==================== 默认欢迎文件列表 ======================

当请求 URI 引用一个目录时,默认 servlet 会在该目录中查找“欢迎文件”,如果存在,则查找相应的资源 URI 以进行显示。 如果不存在欢迎文件,则默认 servlet 提供目录列表(请参阅有关如何自定义的默认 servlet 配置)或返回 404 状态,具体取决于列表设置的值。

默认的欢迎文件是:

  • 索引.html
  • index.htm,和
  • 索引.jsp

那是什么意思呢?

当您将浏览器指向http://localhost:8080/spring 时,请求 URL 中没有列出特定页面。 Tomcat 以及其他 Web 服务器仍会尝试提供一个页面,以便浏览器可以显示某些内容。 默认情况下,如果 URL 中未指定页面,则发送默认主页。 由于您的文件名为hello.jsp ,因此它不被视为欢迎文件,因此 Tomcat 会提供 404 错误。

您可以通过以下方式解决问题

话虽如此,问题不在于com.bmuschko.tomcat插件,也不com.bmuschko.tomcat您的构建文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM