准备给scala项目引入单元测试java
<dependency> <groupId>org.scalatest</groupId> <artifactId>scalatest_2.10</artifactId> <version>2.2.6</version> </dependency>
Scala版本: 2.10.4
编译的时候遇到了下面的错误:服务器
Error:scalac: error while loading Suite, Scala signature Suite has wrong version expected: 5.0 found: 4.1 in Suite.class
一开始猜错是scalatest的版本不对,换了几个版本都仍是遇到同样的错误,认真阅读错误信息后恍然大悟!app
应该是编译环境的版本不对,我原来安装的scala版本是2.10.4,升级到1.11.7后没有这个错误了,但却出现了另一个错误:less
can't expand macros compiled by previous versions of Scala
意思应该是说不能展开之前版本scala编译的宏单元测试
把相应的scalatest编译的版本升级一下:scalatest_2.10 -> scalatest_2.11测试
<dependency> <groupId>org.scalatest</groupId> <artifactId>scalatest_2.11</artifactId> <version>2.2.6</version> <scope>test</scope> </dependency>
Scala版本: 2.11.7
用2.11.7版本的scala编译没有问题了,可是在提交到spark运行的过程当中发现有错误,个人spark用的是官方的基于scala2.10.4编译的2.5.1。ui
java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less;
若是想要要用2.11.7版本的scala来编译你的spark app的话spa
在服务器上就必须本身用对应版本scala从新编译spark!!!scala
为了偷懒继续折腾~code
把scala SDK降级到2.10.6,并把scalatest降级到相应的版本
<dependency> <groupId>org.scalatest</groupId> <artifactId>scalatest_2.10</artifactId> <version>2.2.6</version> <scope>test</scope> </dependency>
Scala版本: 2.10.6
最后,终于能够正常编译和运行scalatest了,而且编译的二进制能够在spark上运行起来了。