先来错误的提示吧
ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /developer/git-repository/kykanmall_learning/src/main/java/com/mmall/dao/CartMapper.java:[3,29] package com.alipay.api.domain does not exist
[ERROR] /developer/git-repository/kykanmall_learning/src/main/java/com/mmall/controller/portal/OrderController.java:[3,22] package com.alipay.api does not exist
[ERROR] /developer/git-repository/kykanmall_learning/src/main/java/com/mmall/controller/portal/OrderController.java:[5,36] package com.alipay.demo.trade.config does not exist
[ERROR] /developer/git-repository/kykanmall_learning/src/main/java/com/mmall/service/impl/OrderServiceImpl.java:[3,22] package com.alipay.api does not exist
[ERROR] /developer/git-repository/kykanmall_learning/src/main/java/com/mmall/service/impl/OrderServiceImpl.java:[604,31] cannot find symbol
symbol: class AlipayResponse
location: class com.mmall.service.impl.OrderServiceImpl
[ERROR] /developer/git-repository/kykanmall_learning/src/main/java/com/mmall/controller/portal/OrderController.java:[131,77] cannot find symbol
symbol: variable Configs
INFO] 36 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.861 s
[INFO] Finished at: 2018-09-10T12:32:49+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project kykanmall: Compilation failure: Compilation failure:
下面是自己解决的思路,想要直接找到解决方法的直接跳到最后
本人也是因为这个问题卡了好久,下面就是一些个人解决问题的思路(新手。。。不得到的地方希望海涵),有时候解决问题会陷入一个死区,在里面苦苦陷入挣扎,但其实顺着报错的提示,把自己从死区里跳出来,换一个思路,然后在沿着这个提示,就能够解决了。
- 在git仓库下的项目下自己git pull 然后找lib下面有没有jar包,结果是有
- 在git仓库下的项目下maven clean package 直接报上述错误,提示也是Compilation failure
- 明明从github上pull下来 merge的本地分支的仓库的项目web-inf/lib下有alipay的jar包,用maven打包以后就报错,编译的时候就没有这些jar包,说明maven确实没有把alipay的jar包打包
- 然后就百度查找 都提示 在maven-compiler-plugin加上
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<!--${project.basedir}-->
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
可是我已经加了啊,所以再想,下面就是比较傻的一些思路了
- 傻的思路
- 以为路径window和linux
\/
不同,所以把${project.basedir}/src/main/webapp/WEB-INF/lib
的路径都改成\\
,当然不对,于是\
改了一遍,${project.basedir}
改成${basedir}
,都不对 - 然后想会不会是因为不兼容的问题,于是检查pom文件,发现window用的jdk1.8.131,linux jdk1.8.181,应该不可能,因为linux的jdk版本是高的,应该兼容的,然后tomcat的servlet呢,哎呀,发现依赖的是7.0的,linux的tomcat是8.0的,所以改了一下,当时还稍微高兴了一下,哎,结果失败。
- 以为路径window和linux
然后又返回原来出错的地方,结合百度到的几乎所有解决方案都是4-1的解决方案
1. `Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project kykanmall: Compilation failure: Compilation failure: ` **这行报错真的很重要**
. 仔细查找pom.xml文件,发现
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
这是创建maven项目时候初始化自动构建的,我估计是maven打包时候是默认加载这个compiler插件的,而不是我们加上的,所以因为这边没有
<compilerArguments>
maven打包自然找不到alipay的jar包。
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
解决
删掉 pom.xml的自带的
<plugin>
因为maven打包默认使用这个插件,这里没有+
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin><compilerArguments>
<extdirs>
到这里问题也基本解决了,所以还是要多看报错的提示,一般99%(稳健)的问题都能解决(相信大佬们写的这些报错提示吧),不要用用自己理解的那一套来解决,那并不怎么样,沿着报错的提示+百度就ok;