You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala 2.12.10导入scala.util.Failure/Success报错求助

导入scala.util.Failure/Success失败的问题排查与解决

环境信息

  • Scala版本:2.12.10
  • Spark版本:3.1.1

问题现象

尝试导入scala.util.Failure和scala.util.Success时失败,尽管这两个类在Scala 2.12.2及以上版本已存在。报错提示如下:

<console>:40: error: value util is not a member of String
       import scala.util.Failure
                    ^
<console>:41: error: value util is not a member of String
       import scala.util.Success
                    ^
<console>:55: error: not found: value Success
           case Success(ApiResponse(code, content, headers)) =>
                ^
<console>:60: error: not found: value Failure
           case Failure(error @ ApiError(code, message, responseContent, cause, headers)) =>
                ^
<console>:67: error: not found: value Failure
           case Failure(exception) =>

相关代码

import java.util.Map;
import fr.ecoemploi.application.etude.swagger.invoker._
import fr.ecoemploi.application.etude.swagger.model.Commune;
import fr.ecoemploi.application.etude.swagger.api.CogControllerApi;
import fr.ecoemploi.application.etude.swagger.invoker.CollectionFormats._
import fr.ecoemploi.application.etude.swagger.invoker.ApiKeyLocations._

import akka.actor.ActorSystem
import akka.stream.ActorMaterializer

implicit val system = ActorSystem("system")
implicit val executionContext = system.dispatcher
implicit val materializer: ActorMaterializer = ActorMaterializer()

import scala.util.Failure
import scala.util.Success

//import scala.concurrent.ExecutionContext.Implicits.global
//import scala.concurrent.Future

val apiInvoker = ApiInvoker()
val cogService = CogControllerApi("http://localhost:9090")
val request = cogService.obtenirCommunes(2022);

val response = apiInvoker.execute(request)

response.onComplete {
    case Success(ApiResponse(code, content, headers)) =>
        System.out.println(s"Status code: $code}")
        System.out.println(s"Response headers: ${headers.mkString(", ")}")
        System.out.println(s"Response body: $content")
        
    case Failure(error @ ApiError(code, message, responseContent, cause, headers)) =>
        System.err.println("Exception when calling CogControllerApi#obtenirCommunes")
        System.err.println(s"Status code: $code}")
        System.err.println(s"Reason: $responseContent")
        //System.err.println(s"Response headers: ${headers.mkString(", ")}")
        error.printStackTrace();

    case Failure(exception) => 
        System.err.println("Exception when calling CogControllerApi#obtenirCommunes")
        exception.printStackTrace();
}

问题原因与解决方案

原因

报错提示value util is not a member of String说明当前作用域中存在一个名为scala的String变量,覆盖了Scala语言的根包名scala。从你提供的环境信息代码可以看到:

scala: String = 2.12.10
spark: String = 3.1.1

这个变量定义导致后续代码中scala.util被解析为访问该String变量的util属性,而String类并没有util成员,因此抛出错误。

解决方案

  1. 重命名冲突变量:将名为scala的变量改为其他名称,比如scalaVersion,彻底避免与根包名的命名冲突。
  2. 重启REPL会话:如果是在Scala REPL中运行代码,关闭当前会话并重新启动,不要先定义scala变量再执行导入操作。
  3. 调整代码顺序:如果必须保留该变量,确保import scala.util.{Failure, Success}语句在变量定义之前执行,这样导入时scala还未被覆盖为String变量。

内容的提问来源于stack exchange,提问作者Marc Le Bihan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:21:02