maven报错找不到符号怎么解决

maven报错找不到符号怎么解决

本篇内容介绍了“maven报错找不到符号怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

语言:Java和Scala并用 
场景:存在java调用scala代码的情况 
maven版本:3.5.1 
IDE:IDEA 2017.1

<h3 id="maven报错找不到符号"  white-space:normal;background-color:#ffffff;"=""> maven报错:找不到符号

并列出找不到的类或程序所在的程序包、位置

在一开始遇到maven问题时,网路上可以搜到的资料基本支持以下几种情况: 
1.清理cache 
使用mvn clean命令清理 
使用IDEA里面的Invalid Cache清理 
2.编码格式不统一 
在pom.xml中将compiler的编码格式设为UTF-8

3.IDE和项目本身的jdk版本不统一 
检查IDE编译使用的jdk版本和在pom.xml中配置的jdk版本是否统一 
4.pom的依赖问题
以上4种情况的解决方法,详细可参考 http://blog.csdn.net/u012062455/article/details/52347099。

上述问题是在网路中搜索得到的主要几种情况,但和我的情况均不相符,无法解决我的问题。

对错误进行定位后,我发现,项目中的scala代码和java代码均可以正常单独编译,但同时编译会报错。首先,排除了代码位于不同包的情况的影响;进一步定位后发现,错误出现在,使用java代码调用scala代码时,也就是说,我在java代码中,只要import了scala的类,就会报错。

原因定位后,在*的一个不太相关的问题的评论中看到了这样一句话,大意是,若在java代码中调用了scala代码,则需先编译scala代码,后编译java代码。

这句话以后,茅塞顿开,现给出两种解决方法:

  • 使用mvn命令控制编译顺序


    • 在pom.xml里面配置编译顺序 
      这部分我研究不深,因此只给出一个成功的配置方案。


    • 以上两种方法均可以编译成功,解决以上maven报错。

      下面将叙述一个我比较困惑的情况,望不吝解答。 
      我将列出一个pom.xml的示例,里面也有配置scala-compile的顺序,使用scala-compile-first这样的字样进行控制。 
      但该配置,在实际使用中,在工程1里可行,但工程2里会报错,然而我两个工程里的配置,顺序几乎放的一样,只不过工程2中可能多引入了很多dependency,配置如下:

      这是我失败情况的配置,不要使用。

      这里的scala-compile-first起到的是什么作用,为什么失效了呢?

      在找到问题所在之后,再进行搜索,发现已有文档提出,若使用java调用scala,需要先编译scala的情况,比如http://www.cnblogs.com/yako/p/5730552.html。

      由此可见,对于自己需要查找的问题, 关键词总结的本领,还要继续加强。

“maven报错找不到符号怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!