Gradle + jetty + Spring MVC failed to start the project

I am currently looking at the fourth edition of "Spring in action" and want to follow the actual project started in Chapter 5 of the book, but I have encountered some problems when starting the project using gradle and jetty.

Code is basically copied from the book, paste several key configuration files:

this is the configuration file for sevelet

package spittr.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import spittr.web.WebConfig;

public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[]{RootConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

}

this is the root configuration file:

package spittr.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan(
        basePackages = {"spittr"},
        excludeFilters = {
                @Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)
        })
public class RootConfig {
}

Note that all java-based configurations are used, and there are no xml files.

the jsp code is as follows:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
    <title>Spitter</title>
    <link rel="stylesheet"
          type="text/css"
          href="<c:url value="/resources/style.css" />">
</head>
<body>
<h1>Welcome to Spitter</h1>

<a href="<c:url value="/spittles" />">Spittles</a> |
<a href="<c:url value="/spitter/register" />">Register</a>
</body>
</html>

build.gradle is as follows:

apply plugin: "war"
apply plugin: "idea"
apply plugin: "java"
apply from: "gretty.plugin"

dependencies {
    compile "org.springframework:spring-webmvc:4.0.7.RELEASE"
    compile "javax.servlet:jstl:1.2"
//    providedCompile "javax.servlet.jsp:jsp-api:2.1"
//    providedCompile "javax.el:javax.el-api:2.2.4"
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}
    maven { url "http://maven.springframework.org/release" }
    maven { url "http://maven.springframework.org/milestone" }
    maven { url "http://maven.springframework.org/snapshot" }
    maven { url "http://download.java.net/maven/2" }
    mavenCentral()

}

war {
    baseName = "spittr"
    version = "0.1.0"
}

when I run the gradle appRun command to start the server, I get the following information:

YangdeMBP:Spittr yangxg$ ./gradlew appRun
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/Users/yangxg/.gradle/caches/modules-2/files-2.1/org.codehaus.groovy/groovy/2.4.15/74b7e0b99526c569e3a59cb84dbcc6204d601ee6/groovy-2.4.15.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
18:17:47 INFO  Spring WebApplicationInitializers detected on classpath: [spittr.config.SpitterWebInitializer@760cf594]
18:17:47 INFO  Initializing Spring root WebApplicationContext
10 08, 2018 6:17:47  org.springframework.web.context.ContextLoader initWebApplicationContext
: Root WebApplicationContext: initialization started
10 08, 2018 6:17:48  org.springframework.web.context.support.AnnotationConfigWebApplicationContext prepareRefresh
: Refreshing Root WebApplicationContext: startup date [Mon Oct 08 18:17:48 CST 2018]; root of context hierarchy
10 08, 2018 6:17:48  org.springframework.web.context.support.AnnotationConfigWebApplicationContext loadBeanDefinitions
: Registering annotated classes: [class spittr.config.RootConfig]
10 08, 2018 6:17:48  org.springframework.web.context.ContextLoader initWebApplicationContext
: Root WebApplicationContext: initialization completed in 301 ms
18:17:48 INFO  Initializing Spring FrameworkServlet "dispatcher"
10 08, 2018 6:17:48  org.springframework.web.servlet.DispatcherServlet initServletBean
: FrameworkServlet "dispatcher": initialization started
10 08, 2018 6:17:48  org.springframework.web.context.support.AnnotationConfigWebApplicationContext prepareRefresh
: Refreshing WebApplicationContext for namespace "dispatcher-servlet": startup date [Mon Oct 08 18:17:48 CST 2018]; parent: Root WebApplicationContext
10 08, 2018 6:17:48  org.springframework.web.context.support.AnnotationConfigWebApplicationContext loadBeanDefinitions
: Registering annotated classes: [class spittr.web.WebConfig]
10 08, 2018 6:17:48  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping registerHandlerMethod
: Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String spittr.web.HomeController.home()
10 08, 2018 6:17:48  org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
: Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler]
10 08, 2018 6:17:48  org.springframework.web.servlet.DispatcherServlet initServletBean
: FrameworkServlet "dispatcher": initialization completed in 510 ms
18:17:48 INFO  Jetty 9.2.24.v20180105 started and listening on port 8080
18:17:48 INFO  Spittr runs at:
18:17:48 INFO    http://localhost:8080/Spittr

> Task :appRun
Press any key to stop the server.
<===========--> 87% EXECUTING [35s]
> :appRun
One of the strange things about

is that the progress indicator card is not moving at 87%. Visit http://localhost:8080/Spittr Times error message is as follows:

org.apache.jasper.JasperException: /WEB-INF/views/home.jsp(1,63) PWC6188: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:172)
    at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:431)
    at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:240)
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:502)
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:582)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1657)
    at org.apache.jasper.compiler.Parser.parse(Parser.java:185)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:145)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:212)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
    at org.eclipse.jetty.jsp.JettyJspServlet.service(JettyJspServlet.java:103)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:595)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:191)
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:72)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1221)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:201)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.base/java.lang.Thread.run(Thread.java:844)

but obviously gradle installed jstl 1.2 for me during the build project. Why?

Menu