[英]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 状态,具体取决于列表设置的值。
默认的欢迎文件是:
那是什么意思呢?
当您将浏览器指向http://localhost:8080/spring 时,请求 URL 中没有列出特定页面。 Tomcat 以及其他 Web 服务器仍会尝试提供一个页面,以便浏览器可以显示某些内容。 默认情况下,如果 URL 中未指定页面,则发送默认主页。 由于您的文件名为hello.jsp
,因此它不被视为欢迎文件,因此 Tomcat 会提供 404 错误。
您可以通过以下方式解决问题
hello.jsp
重命名为index.jsp
web.xml
自定义welcome-file-list
以包含hello.jsp
话虽如此,问题不在于com.bmuschko.tomcat
插件,也不com.bmuschko.tomcat
您的构建文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.