首页 > 大数据 > 数据分析 > maven报错:找不到符号
语言:Java和Scala并用
场景:存在java调用scala代码的情况
maven版本:3.5.1
IDE:IDEA 2017.1
并列出找不到的类或程序所在的程序包、位置
在一开始遇到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代码。
这句话以后,茅塞顿开,现给出两种解决方法:
点击(此处)折叠或打开
点击(此处)折叠或打开
下面将叙述一个我比较困惑的情况,望不吝解答。
我将列出一个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。
由此可见,对于自己需要查找的问题, 关键词总结的本领,还要继续加强。
@转载: http://blog.csdn.net/ilvchocolate/article/details/75626921
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30089851/viewspace-2143510/ ,如需转载,请注明出处,否则将追究法律责任。