转自:http://blog.csdn.net/lvguanming/article/details/37812579?locationNum=12

写在前面的话

现在是越来越太原讨厌Eclipse这个IDE了,他的存在的各种问题完全可以出10w字的一本书了。当然,如果你喜欢在解决IDE问题过程中提升技能那就不要说了,我认为,Eclipse的设计存在一个问题:它恨不得把世界上所有的功能都囊括进来,但是出现的各种问题基本无法在IDE里自动消化。

Eclipse虽是个强大的IDE,但是在解决IDE本身出现的不友好的故障过程中浪费大量的时间是非常不划算的。由于这个原因,导致众多Eclipse的重度用户,在博客里开专栏收集各种Eclipse的问题,

举例来说明,在使用EclipseEE这个版本中安装Maven插件开发Java Web应用时,发布项目到Tomcat中无法启动,应为它并没有把Maven所管理的依赖自动添加到应用的ClassPath中,导致启动时报各种ClassNotFoundException。这一点,我已经花掉了差不多半天的时间来查明原因(这就是我写这篇文章的冲动所在),这个让我非常沮丧的经历再次让我对这个IDE失去信心。大部分初级工程师对IDE的依赖太过强烈,所以有必要分享一下给大家个提示,Eclipse本来只是个工具,不得不说在某些时候,这个IDE确实提高了不少效率,但是由于依赖的习惯,已经离不开Eclipse的人可能要在解决上述说的各种IDE不能消化的问题而话费大量的时间,难道只是为了使用这个“工具”而使用工具?却忘记了使用工具为了什么!

正题

以上是开篇感慨,目的是提示大家,不要被“神奇的Eclipse"工具所绑架。

下面揭示前文提到的:Eclipse中发布Maven管理的Web项目时找不到类的问题。

ClassNotFoundException: org.springframework.web.context.ContextLoader

这个报错是没有人希望看到的,既然看到了,没有办法回避,只能解决它(我们被Eclipse绑架了)。

原因是这样的:使用eclipse没有帮你把jar拷贝到lib下,classloader在load的时候当然是找不到的。在它帮你发布的web应用的lib下你可以看到如下:

进一步原因:发布设置里默认不发布这些jar,居然没有任何提示,这能算是智能的IDE吗?

在maven管理的web工程上查看属性,具体见上图,看到了吧,它根本没有关注maven原来是它的一个插件。jar全部忽略了

解决办法

接上图,看下图,你就懂了。使用“add...”把,没法子呀,它不管你,你只能自力更生了。

接着

哦,看见了吧,maven管理的classPath在这里,再走。

到此,你的classpath有了maven管理的jar了。点击“Ok”,再重新发布项目看看。那些Not Found可以消失了吧!

总之

举例说明了Eclipse的IDE内部问题是烦人且浪费时间的,从这一点说,我们一直在解决IDE抛给我们的问题,而无法专注解决我们当初使用它为了解决的问题。我们被它给绑架了。有人会说,你牛逼就不要用嘛。呵呵,我要是牛逼当然不会用他啦。

编程的本质上是把自己的思路用用代码来描述一下。却不得不被各种IDE干扰,在你牛逼之前,也是没有办法的。

当然了,世界上没有完美的IDE,只有完美的思考方式。当到一定程度,我们完全可以脱离任何IDE写出优秀的应用来。到那个时候,就是所谓牛逼的起码境界。前面的路都是用生命、血和汗来铺,这里只是希望人们少流些血和汗,早一天牛逼起来。

Eclipse中发布Maven管理的Web项目时找不到类的问题根源和解决办法(转)的更多相关文章

  1. eclipse中基于maven构建的web项目pom.xml中指定的jar包无法发布到tomcat中

    eclipse运行maven web项目报错: 信息: Starting Servlet Engine: Apache Tomcat/7.0.57 一月 07, 2015 11:50:44 下午 or ...

  2. Java归去来第4集:java实战之Eclipse中创建Maven类型的SSM项目

    一.前言 如果还不了解剧情,请返回第3集的剧情          Java归去来第3集:Eclipse中给动态模块升级 二.在Eclipse中创建Maven类型的SSM项目 2.1:SSM简介 SSM ...

  3. Spring-在IDEA2016中创建maven管理的SpringMVC项目

    这是一套我自己摸索出来的创建项目方法,基本是用在创建用maven管理的 Spring+SpringMVC+Mybatis的J2EE项目时. 创建一个maven管理的webapp项目 在创建项目时,选择 ...

  4. MyEclipse使用总结——在MyEclipse中新建Maven框架的web项目[转]

    前面的文章我们已经在本机安装好了maven,同时在myeclipse中配置好了maven的插件. 链接如下: Maven安装----在Windows上安装Maven myeclipse安装maven插 ...

  5. maven的java web项目启动找不到Spring ContextLoaderListener的解决办法

    用maven搭建的java web项目,上传到git仓库后,当同事clone下来项目,部署到tomcat运行时,就报了如下错误,即启动web项目时,加载web.xml文件,找不到spring的监听器, ...

  6. eclipse 中发布 maven 项目到 tomcat

    第一步:在 eclipse 中 右键  你的项目 Run as --> Maven build...--> Goals: 输入 install   run 第二步:在 eclipse 中 ...

  7. eclipse中使用Maven管理java工程设置jdk版本为jdk1.8

    使用Maven管理Java工程时,maven可以自动下载工程中依赖的jar包,这对于大型的项目非常方便.但在初次使用eclipse新建maven工程时遇到一些问题,我的jdk安装的是1.8版本,在配置 ...

  8. idea 中利用maven创建java web 项目

    转自:http://www.linuxidc.com/Linux/2014-04/99687.htm 本文主要使用图解介绍了使用IntelliJ IDEA 12创建Maven管理的Java Web项目 ...

  9. 使用Maven构建Java Web项目时,关于jsp中引入js、css文件路径问题。

    今天有点闲,自己动手搭建一个Java Web项目,遇到jsp中引入js.css文件时路径不正确的问题,于是在网上查阅了很多资料,最终都无法解决问题,于是,上stackoverflow找到了解决方法,这 ...

随机推荐

  1. python 读 xlsx

    前言 xlsx写方法参考此连接:http://www.cnblogs.com/whf191/p/5482485.html xlrd是用来读的,使用前需安装 pip install xlrd 例子 fn ...

  2. 力扣——Partition List(分隔链表) python实现

    题目描述: 中文: 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = ...

  3. js error监控

    window.onerror = function(message, source, lineno, colno, error) { ... } 功能参数: message:错误消息(字符串).eve ...

  4. PHP+Redis 有序集合实现 24 小时排行榜实时更新

    基本介绍 Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个 double 类型的分数.redis 正是通过分数来为集合中的成员进行从 ...

  5. 解决分布式事务基本思想Base和CPA理论、最终一致性|刚性事务、柔性事务

    在学习解决分布式事务基本思路之前,大家要熟悉一些基本解决分布式事务概念名词比如:CAP与Base理论.柔性事务与刚性事务.理解最终一致性思想,JTA+XA.两阶段与三阶段提交等. 如何保证强一致性呢? ...

  6. 【UML】最简单的类图

    Rational Rose简明实用教程  https://blog.csdn.net/gz153016/article/details/49641847 Rational Rose是Rational公 ...

  7. sparksql笔记

    1.sparksql是Spark用来处理结构化数据的一个模块,它提供了两个抽象DataFrame和DataSet并且作为分布式SQL查询引擎的作用. Hive SQL转换成MapReduce然后提交到 ...

  8. 【dart学习】-- Dart之async和await

    一,概述 在Dart1.9中加入了async和await关键字,有了这两个关键字,我们可以更简洁的编写异步代码,而不需要调用Future相关的API.他们允许你像写同步代码一样写异步代码和不需要使用F ...

  9. Kubernetes v1.16 对API的更改

    前段时间安装Kubernetes v1.16.2,然后从v1.14版本的拷贝yaml文件过来执行,很多都报没有相应的api,查看一下新版本的api admissionregistration.k8s. ...

  10. 测试技能图谱skill-map

    # 测试技能图谱 ## 代码静态分析- Sonar- PMD- Infer- Android * findbugs * AndroidLint * CheckStyle- iOS * scanbuil ...