我很久没有回到Spring了,我正在尝试使用Hibernate作为ORM在Tomcat 6.0上运行一个简单的Web应用程序。
我得到的错误是:
SEVERE: Servlet.service() for servlet mvc-dispatcher threw exception
java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.view.viewAllEnquiries_jsp
它通过我的控制器正常运行:
@Controller
@ComponentScan("com.intl.cigna.ecommerce.dao")
public class EnquiryController {
@Autowired
private EnquiryDao enquiryDao;
@RequestMapping("/viewAllEnquiries")
public String getAllEnquiries(Model m) {
List<Enquiry> enqs = enquiryDao.getAllEnquiries();
m.addAttribute("SEARCH_ENQUIRIES_RESULTS_KEY", enqs);
return "viewAllEnquiries";
}
}
但由于某种原因,似乎没有编译jsp。当我重命名或删除jsp时,它(显然)找不到它。
调度程序的web.xml是:
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我一定错过了一些明显的东西......
答案 0 :(得分:2)
只是一个猜测 - 但看起来JSP可能不包含有效的java代码(缺少导入和东西) - 因此JSP不会编译到servlet而你将获得ClassNotFoundException
。
检查catalina.log
文件,看看是否有遗漏的编译错误。
答案 1 :(得分:1)
确保你的pom / class路径中包含所有jstl,servlet和jsp依赖项:
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
</dependency>