linux下maven项目打包编译期找不到alipay的jar包 解决

先来错误的提示吧
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: 

下面是自己解决的思路,想要直接找到解决方法的直接跳到最后

本人也是因为这个问题卡了好久,下面就是一些个人解决问题的思路(新手。。。不得到的地方希望海涵),有时候解决问题会陷入一个死区,在里面苦苦陷入挣扎,但其实顺着报错的提示,把自己从死区里跳出来,换一个思路,然后在沿着这个提示,就能够解决了。

  1. 在git仓库下的项目下自己git pull 然后找lib下面有没有jar包,结果是有
  2. 在git仓库下的项目下maven clean package 直接报上述错误,提示也是Compilation failure
  3. 明明从github上pull下来 merge的本地分支的仓库的项目web-inf/lib下有alipay的jar包,用maven打包以后就报错,编译的时候就没有这些jar包,说明maven确实没有把alipay的jar包打包
  4. 然后就百度查找 都提示 在maven-compiler-plugin加上
    1. <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>

      可是我已经加了啊,所以再想,下面就是比较傻的一些思路了
  5. 傻的思路
    1. 以为路径window和linux\/不同,所以把${project.basedir}/src/main/webapp/WEB-INF/lib的路径都改成\\,当然不对,于是\ 改了一遍,${project.basedir}改成${basedir},都不对
    2. 然后想会不会是因为不兼容的问题,于是检查pom文件,发现window用的jdk1.8.131,linux jdk1.8.181,应该不可能,因为linux的jdk版本是高的,应该兼容的,然后tomcat的servlet呢,哎呀,发现依赖的是7.0的,linux的tomcat是8.0的,所以改了一下,当时还稍微高兴了一下,哎,结果失败。

然后又返回原来出错的地方,结合百度到的几乎所有解决方案都是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>
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
maven打包自然找不到alipay的jar包。

解决

删掉 pom.xml的自带的
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
因为maven打包默认使用这个插件,这里没有+<compilerArguments>
<extdirs>

到这里问题也基本解决了,所以还是要多看报错的提示,一般99%(稳健)的问题都能解决(相信大佬们写的这些报错提示吧),不要用用自己理解的那一套来解决,那并不怎么样,沿着报错的提示+百度就ok;

猜你喜欢

转载自blog.csdn.net/noDr_butTry/article/details/82588480
今日推荐