今天做东西的时候,用eclipse导出Runnable JAR File,导出的jar文件不能运行,提示Unable to locate NamespaceHandler for namespace [http://www.springframework.org/schema/aop],但是spring-aop的 包明明已经导入到项目里面了。于是重新导出一个jar文件试下,结果还是报同样的错,但是有点不一样,这次错在[http://www.springframework.org/schema/context]。

网上查了一下,出现这个错误的原因是spring.handler出了问题,把jar文件解压看了一下发现了问题所在。原来用eclipse导出的时候,选择了Extract required libraries into generated JAR,这样就分别解压了每一个spring模块的包,每一个spring的包都有自己的spring.handler,后面的覆盖前面的,最后在导出的包里面只有一个spring模块的spring.handler在里面,其他的没有,所以就出问题了。

解决这个问题最省事的方法就是导出的时候,别选Extract required libraries into generated JAR,选择Package required libraries into generated JAR,就好了。