我的应用程序在开发服务器上运行良好,但当我上传时,它无法启动,日志中出现以下异常:java.lang.NoClassDefFoundError: org/apache/jasper/runtime/JspSourceDependent
。到目前为止,它似乎与我的应用程序中声明的jsp依赖关系有关,它们是:
<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</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
我在这里遗漏了一些显而易见的东西,为什么应用程序在开发环境中运行良好,但在生产环境中无法启动?
异常是由于使用jspc-maven插件预编译JSP,在预编译的类中留下了tomcat特定的代码。解决方案是从pom中删除插件,并让appcfg在上传之前进行预编译。
我认为您需要为您的开发服务器切换到Jetty。