【异常处理】sbt构建Chisel库时出现extracting structure failed:build status:error的解决办法

文章目录

报错背景:

最近在写Chisel时,构建项目常常需要等待很久,然后报错extracting structure failed:build status:error

这个报错实际上告诉我们,在build.sbt中指定的依赖没有下载到 ,导致依赖的结构无法实现。

解决思路:

chisel库的资源是基于build.sbt配置文件给出的信息,使用sbt去maven网站上下载的,那么首先要确保sbt已经使用国内镜像源,以加快下载速度,其次根据报错信息,通过maven仓库网站查看缺少的文件,找到兼容的版本号,并修改build.sbt文件。

①IDEA中配置本地的SBT进行下载

打开IDEA的File-Settings ,找到sbt ,按照如图配置。

默认情况下Launcher是Bundle,即IDEA内置的SBT,默认从maven官方下载,我们将其指定为本地的sbt下bin目录中的sbt-launch.jar,并将VM parameters写入,方便后面更改为国内maven镜像站。

bash 复制代码
-Dsbt.override.build.repos=true

②更改下载源为华为的镜像站

1. 修改sbtconfig.txt

安装的sbt目录\conf\sbtconfig.txt 中写入

-Dsbt.override.build.repos=true

为true表示sbt构建的仓库下载源将自定义。

2. 增加repositories文件

在当前用户目录.sbt 下新建repositories文件,无需扩展名,并写入:

bash 复制代码
[repositories]
local
huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
maven-central: https://repo1.maven.org/maven2/
sbt-plugin-repo: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

③查看报错信息

bash 复制代码
scalaVersion := "2.13.8"

scalacOptions ++= Seq(
  "-deprecation",
  "-feature",
  "-unchecked",
  "-Xfatal-warnings",
  "-language:reflectiveCalls",
)


libraryDependencies += "edu.berkeley.cs" %% "chiseltest" % "0.5.6"
val chiselVersion = "3.4.3"
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % chiselVersion

查看红框中第三行报错信息,可以看到sbt在maven仓库中没有找到build.sbt指定的库

[error] not found: https://repo1.maven.org/maven2/edu/berkeley/cs/chisel3_2.13/3.4.3/chisel3_2.13-3.4.3.pom

我们通过浏览器查看有没有这个库,可以看到在https://repo1.maven.org/maven2/edu/berkeley/cs/ 下有chisel3 2.11到2.13的库

点进chisel3 2.13中发现确实没有3.4.3

返回,去看chisel3 2.11的目录 发现确实有3.4.3的chisel适配版本

因此报错原因就找到了------build.sbt中指定的scala版本和chisel版本不匹配,如果想继续使用chisel 3.4.3版本,就应该更改build.sbt中scala版本为2.11系列,如果想继续使用2.13版本的scala,就必须更改chisel库版本为2.13库下的3.5.0到3.6.0系列。

可以下载的scala版本在https://repo.huaweicloud.com/repository/maven/org/scala-lang/scala-library/ 可以查看

总结

说了这么多,其实针对我的问题,最终解决办法就是把build.sbt中的scala版本更改为2.11系列即可,我修改成了2.11.9。

读者面对这个异常需要掌握这套方法,确保idea绑定了本地的sbt,并修改sbt的下载源,根据下载源的报错查找scala和chisel对应版本是否匹配,最终根据官方源中兼容的库去修改版本号。

这里给出我整理的Scala版本对应兼容的Chisel和Chiseltest版本信息:

scala 2.11系列兼容的chisel版本为兼容的chisel版本3.0.0到3.4.4,chiseltest版本为0.2.0到0.3.4

scala 2.12系列兼容的chisel版本为兼容的chisel版本3.0.0到3.6.0,chiseltest版本为0.2.0到0.6.1

scala 2.13系列兼容的chisel版本为兼容的chisel版本3.5.0到3.6.0,chiseltest版本为0.5.0到0.6.2 5.0.0到5.0.2 以及6.0.0

具体的scala小版本信息,请查看这里

具体的chisel和chiseltest小版本信息请查看这里

整理的Scala-Chisel-Chiseltest版本信息对应表

这里我整理出的对应表放入了网盘中,请自取:

链接:https://pan.baidu.com/s/1tk_mW7Z_RTwhFH_YLgUOsQ?pwd=z52s

提取码:z52s

--来自百度网盘超级会员V5的分享

相关推荐
旋风小飞棍2 天前
如何在sheel中运行spark
大数据·开发语言·scala
rylshe13142 天前
在scala中sparkSQL连接mysql并添加新数据
开发语言·mysql·scala
MZWeiei4 天前
Spark任务调度流程详解
大数据·分布式·spark·scala
бесплатно4 天前
Scala流程控制
开发语言·后端·scala
Bin Watson11 天前
解决 Builroot 系统编译 perl 编译报错问题
开发语言·scala·perl
什么芮.14 天前
大数据应用开发和项目实战(2)
大数据·pytorch·sql·spark·scala
不要天天开心16 天前
Spark-Streaming核心编程:有状态转化操作与DStream输出
scala
坚硬果壳_17 天前
【持续更新】 CDC 跨时钟域处理
fpga开发·硬件架构·ic设计
欧先生^_^17 天前
Scala语法基础
开发语言·后端·scala
IC拓荒者17 天前
2026届华为海思秋暑期IC实习秋招笔试真题(2025.04.23更新)
ic设计·数字后端·华为海思·ic后端·海思ic实习·海思ic秋招·海思ic笔试真题