对于如题描述的错误,在网上查了,是由于包的冲突导致的,但是不太容易找出到底是哪个包冲突了,只能手工查看每个包看是否具备org.slf4j.MDC.getCopyOfContextMap 方法,如果不具备的就想办法处理即可。
一般我们都会引入slf4j的相关包,都具备org.slf4j.MDC.getCopyOfContextMap 方法但是如果是J2EE6的项目的话,weld-osgi-bundle.jar 会包含slf4j相关的类,bean-validator.jar也会包含相关的类,可以都检查一下。实测bean-validator.jar的slf4j相关的类版本比较低,不包含org.slf4j.MDC.getCopyOfContextMap方法的可能性比较大。
然而bean-validator.jar一般排在j2ee6所有jar的首位,也就是载入顺序的时候先载入,这时可以尝试调整eclipse的载入顺序进行处理,也可以将bean-validator.jar删除后,再重新添加,此时bean-validator.jar会放在j2ee6所有包中的最末位,这时再运行就不会报错。