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

时间:2019-04-08 16:01:28

标签: java tomcat gradle

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

tomcatRun

我还有一个名为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' } } 的jsp文件放在hello.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!";
    }
}

1 个答案:

答案 0 :(得分:1)

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

Tomcat文档(conf/web.xml)指出以下内容:

  

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

当请求URI指向目录时,默认servlet看起来如下   该目录中的“欢迎文件”,如果存在的话,   用于显示的相应资源URI。   如果不存在欢迎文件,则默认servlet将提供   目录列表(请参阅默认servlet配置以了解如何   自定义)或返回404状态,具体取决于   列表设置。

默认欢迎文件为:

  • index.html
  • index.htm和
  • index.jsp

那是什么意思?

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

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

话虽这么说,问题不是com.bmuschko.tomcat插件也不是您的构建文件。