我正在按照指南here来学习Spring MVC。我正在使用Tomcat 8.0.14。 我遇到了javax.servlet.jsp.jstl.core.Config的ClassNotFoundException。显然,我将jslt 1.2包含在我的build.gradle文件中,如下所示,但错误仍然存在: 申请插件:"战争"
repositories {
mavenCentral()
mavenLocal()
maven { url "http://repo.spring.io/libs-release" }
}
configurations {
provided
}
dependencies {
provided 'javax.servlet:javax.servlet-api:3.1.0'
compile 'taglibs:standard:1.1.2'
compile 'javax.servlet.jsp.jstl:jstl:1.2'
compile 'org.springframework:spring-context:4.1.1.RELEASE'
compile 'org.springframework:spring-webmvc:4.1.1.RELEASE'
compile 'org.mariadb.jdbc:mariadb-java-client:1.1.7'
testCompile "org.springframework:spring-test:4.1.1.RELEASE"
testCompile "junit:junit-dep:4.11"
}
sourceSets.main.compileClasspath += configurations.provided
sourceSets.test.compileClasspath += configurations.provided
war {
baseName = "gs-first"
version = "0.1.0-DEV"
}
仅当我到达步骤 2.3时才会出现异常。在前面提到的指南中将视图与控制器分离 - 只有这样才能获得异常,之前的所有步骤都运行良好。
我怀疑w.r.t有错误的配置。由于org.springframework.web.servlet.view.JstlView
位于路径中,因此javax.servlet.jsp.jdtl.core.Config
需要jstl jar。
以下是完整的例外情况:
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1287)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
org.springframework.web.servlet.support.JstlUtils.exposeLocalizationContext(JstlUtils.java:101)
org.springframework.web.servlet.view.JstlView.exposeHelpers(JstlView.java:135)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:146)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
非常感谢您的帮助!
答案 0 :(得分:0)
我认为我使用了错误的jslt库是正确的。而不是
编译' javax.servlet.jsp.jstl:jstl:1.2'
我需要使用
编译' jstl:jstl:1.2'
我在" cacophony"中做出了错误的选择。选项maven给了我:)。感谢您阅读和帮助:)。