Maven部署过程中的ClassCastException问题
来源:互联网 发布:怎样进入淘宝直播间 编辑:程序博客网 时间:2024/06/05 10:43
引言: Maven功能强大,但是又有些复杂,难以捉摸和使用。在本人开发中碰到了一个ClassCastException的问题,通过这个问题的解决,加深了对于maven依赖管理中scope的理解。
1. 问题的引入
部署环境tomcat 7, 开发中使用的框架spring,spring data,hibernate之类的,基于Maven部署过程中,会出现以下异常信息:
2. 问题分析
这几个Servlet都是在web.xml中配置的Filter,其配置没有问题。错误类型为ClassCastException, 就是其实现的Filter与目标的Filter存在不同,就是说有可能是类库引用的不同,导致在启动过程中,出现这样的问题。
3. 查看pom.xml
在开发中,引入了如下包,用以解决Servlet/JSP中常用类库的引用问题,这些都是在Web服务器中实现的类库。
这里可以看到,jsp/servlet将在整个的打包部署声明周期中被用到,并被打包到部署环境中。4. 问题的解决
由于无法预知最终部署的Web服务器的版本和类型,故这里的这两个依赖在编译、测试中会用到,但是在部署环境中,是不能打包到部署环境中去的。
故需要做如下修改:
5. Scope的含义和使用
<dependency>中<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
依赖范围(scope)主源码classpath可用测试源码classpath可用会被打包compile 缺省值TRUETRUETRUEtestFALSETRUEFALSEruntimeFALSETRUETRUEprovidedTRUETRUEFALSE
- Maven部署过程中的ClassCastException问题
- Maven部署过程中的ClassCastException问题
- Maven项目部署到tomcat+部署中的各种问题
- 部署项目过程中的一些小问题。。。。
- maven项目部署过程
- 使用tomcat maven插件过程中的一些问题
- kubernetes 单节点 部署实践以及部署过程中的问题总结
- maven工程部署到tomcat服务器过程中遇到的问题总结
- 解决 maven system 部署问题
- maven tomcat插件热部署配置过程
- maven tomcat插件热部署配置过程
- Android布局中的ClassCastException
- 网站部署中的问题
- java.lang.ClassCastException问题
- Maven问题java.lang.ClassCastException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecute
- Maven安装中的问题
- maven安装中的问题
- Eclipse中的maven项目没有部署成功
- java设计模式(1/23)-单例模式(Singleton pattern)
- 【第十八课】GUI---十个按钮的设计
- 【个人】JavaScript数组知识点补充
- 盒模型
- python发送get请求
- Maven部署过程中的ClassCastException问题
- Java中堆内存和栈内存详解
- Emacs快捷键
- SAP实用操作技巧之八:如何快速登陆SAP?
- Oracle笔记--WITH AS 用法
- shell快速迁移海量文件
- Android 多线程Thread和Runnable的区别
- JSch
- Python的协程