本篇内容介绍了“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。
由此可见,对于自己需要查找的问题, 关键词总结的本领,还要继续加强。
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站