有时候导入一些开源工程(maven结构的),在eclipse中(装了插件m2eclipse后的)该工程前面
会有一个小的红色感叹号,但点开工程后没有发现有打小红叉的内容,这种情况其实大部分是
jar包依赖出来问题造成编译不能通过,如果有耐性可以在src里挨个点击代码打开,运气好的话
就会发现有报错内容(import 包名 not resloved),找到对应的jar包在maven dependencies下
点击相关jar包发现无法打开(正常加载的jar是可以展开目录结构的)。如果怕查找src麻烦,
也可以直接在maven dependencies下挨个点击,看哪个jar不能正常展开目录,说明就是这个jar
在maven下载或加载的时候出了问题,导致src下报错,进而使整个工程出现“红色感叹号”。
解决办法:
这种问题基本上是由于maven3和maven2的一些资源库下载到本地的jar和其他文件不同造成的,
如果是在maven3下报错,则在eclipse中将maven的bin等相关配置改为maven2,然后重新update
maven工程,如果不报错,则把下载后对应之前报错的jar包等所有相关内容拷贝覆盖掉maven3
的resposity里,然后在将eclipse中的maven改成3版本的,重新update后即可。
举例:MetaQ(全称Metamorphosis)的工程导入既是如此,直接用maven3时,其子模块server,
server-wrapper,tools工程都报“红色小感叹号”,但是里面的src没有报“红叉叉”,按照
上面的排查方式发现是quartz和aviator的包加载不上,随后换成maven2后能够正常编译加载了,
然后将maven2的resposity里的这两个包的内容覆盖掉maven3里的,再把eclipse里的maven
改成maven3后update即可。
解决办法之一:
Maven -> Update Project...