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

Mac下Scala在Unicode命名目录编译失败原因咨询

问题分析与解决方案

你遇到的这个问题既不是单纯的系统错误,也不是OS启动scalac时的解析问题,而是Scala 2.12.x早期版本(包括你使用的2.12.8)与JDK在Unicode路径处理上的兼容性bug。

问题根源

从报错栈的核心信息java.lang.IllegalArgumentException: Error decoding percent encoded characters可以看出:

  • 当Scalac启动时,会尝试加载内部的Scala属性文件,这个流程依赖JDK的类加载器来解析路径。
  • 你的目录路径中包含韩语Unicode字符,JDK的sun.net.www.ParseUtil.decode方法在处理这些字符的URL编码时出现了解码失败,进而触发了初始化异常,导致编译器崩溃。
  • 移出Unicode命名的父目录后,路径全为ASCII字符,JDK的路径解析逻辑能正常工作,所以编译成功。

解决方案

针对这个问题,你有两个可行的处理方向:

  1. 升级Scala版本
    Scala官方在后续的2.12.x维护版本(比如2.12.15及以上)以及2.13.x全系列中修复了这个路径编码处理的bug。升级后,编译器就能正确识别包含Unicode字符的目录路径,无需修改目录结构。

  2. 临时规避方案
    如果暂时无法升级Scala版本,就继续保持代码目录在纯ASCII命名的路径下,避免路径中出现非ASCII的Unicode字符,这是最直接的临时解决办法。

补充验证

你可以尝试在升级Scala版本后,回到原来的Unicode目录下编译代码,就能确认问题是否被修复。比如如果用sbt管理项目,修改build.sbt中的Scala版本:

scalaVersion := "2.12.15"

内容的提问来源于stack exchange,提问作者Theko Lekena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:56:06