zoukankan      html  css  js  c++  java
  • scala使用FunSpec进行单元测试报错

    遇到比较奇怪的问题,mvn项目中的main函数可以正常运行,但是test阶段出错,报错信息如下:

    Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at learning_scala.java.Main.main(Main.java:12)
    Caused by: java.lang.ClassNotFoundException: scala.ScalaObject
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)

    test代码如下:

    class Sampling$Test extends FunSpec{
      describe("Sampling Test"){
        val spark = SparkSession
          .builder()
          .master("local")
          .getOrCreate()
        println("......")
        it("should run without exeption."){
          val array: Array[String] = Array("down", "xxx", "xxx", "xxx", "xxx")
          Sampling.main(array)
        }
      }
    }

    解决方法:

    将 scala-library.jar 的路径加入到 CLASSPATH 中(参考:https://stackoverflow.com/questions/7781547/noclassdeffounderror-scala-scalaobject-in-mixed-scala-java-project),但是又报了如下错误:

    Error:scalac: error while loading Suite, Scala signature Suite has wrong version
     expected: 5.0
     found: 4.1 in Suite.class

     是scala和单元测试包不匹配造成的,将org.specs包更新到最新,问题解决:

    <dependency>
          <groupId>org.specs</groupId>
          <artifactId>specs</artifactId>
          <version>1.4.3</version>
          <scope>test</scope>
    </dependency>
  • 相关阅读:
    ( KMP 求循环节的个数)Power Strings -- poj -- 2406
    (矩阵快速幂) Fibonacci -- poj -- 3070
    (字符串处理)Fang Fang -- hdu -- 5455 (2015 ACM/ICPC Asia Regional Shenyang Online)
    (线段树 区间查询)The Water Problem -- hdu -- 5443 (2015 ACM/ICPC Asia Regional Changchun Online)
    (最短路 spfa)Wormholes -- poj -- 3259
    (水题) Div 3 -- SGU -- 105
    (水题)987654321 problem -- SGU 107
    (最短路 dijkstra)昂贵的聘礼 -- poj -- 1062
    (欧拉公式 很水) Coprimes -- sgu -- 1002
    (广搜) Find a way -- hdu -- 2612
  • 原文地址:https://www.cnblogs.com/zhaochunhua/p/7460029.html
Copyright © 2011-2022 走看看