本篇内容介绍了“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的类,就会报错。
原因定位后,在stackoverflow的一个不太相关的问题的评论中看到了这样一句话,大意是,若在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报错找不到符号怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。