Jenkins构建项目时出现package not exist和cannot find symbol

最近用Jenkins自动化打包时,一直报错,以前都是正常的,如图(为了公司隐私):

Jenkins构建项目时出现package not exist和cannot find symbol

这个cannot find symbol错误大概率是因为package not exist这个问题导致的,那么具体先解决package not exist问题。在网上查了很多资料,比如scope范围不对,mvn clean install等等,一开始以为是maven缓存的问题,但是都不对。

首先本地肯定是能打包的,就是用平台自动打包就出现了这个问题,询问了平台组,说是jar包冲突,但是这个错误一看就不像是冲突。由于当时急着打包所以采取了野蛮处理,因为这个jsonutil没有一个地方用到,所以把这个工具类给删了,于是成功打包。

当然,”出现问题就把提出问题的人解决掉“这种解决方式肯定不能一直这么搞,假如业务有很多地方用到了这个工具类呢,那么就是灾难级的改动了。

还是回到原点看看pom.xml吧,pom文件里并没有引用org.codehaus.jackson这个包,而是引用了org.restlet.ext.jackson这个包。由于Hierarchical dependence,所以也能下载到org.codehaus.jackson。想到这里我好像有一点眉目了,于是在pom.xml中添加了org.codehaus.jackson,然后尝试打包,成功。

以为是maven-compiler-plugin版本的问题,但是后面测试也没问题,感觉应该是Jenkins的问题,只会根据pom.xml的依赖找jar包,而不会去找层级依赖的包。

如果不是层级依赖的包,而是pom.xml文件里的依赖找不到,有可能就是缓存的原因,清空缓存重新下载jar包就是。

还有就是中央仓库确实没这个jar包,自己上传就是了。