【异常处理】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的分享

相关推荐
sucool_lb16 小时前
《一生一芯》数字实验三:加法器与ALU
一生一芯
sucool_lb1 天前
《一生一芯》数字实验六:实现随机数发生器
一生一芯
小伍_Five2 天前
Spark实战能力测评模拟题精析【模拟考】
java·大数据·spark·scala·intellij-idea
黄雪超2 天前
DataStreamAPI实践原理——快速上手(实操详细版)
大数据·flink·scala
白总Server4 天前
C++语法架构解说
java·网络·c++·网络协议·架构·golang·scala
vortex55 天前
Perl One-liner 数据处理——基础语法篇【匠心】
开发语言·scala·perl
老兵发新帖6 天前
Coursier:安装sbt
scala
芯语新源8 天前
如何迁移SOS数据库和修改sos服务的端口号
ic设计
请你喝好果汁64110 天前
indel_snp_ssr_primer
大数据·开发语言·scala
MZWeiei12 天前
Spark 中,map和foreach的区别
大数据·分布式·spark·scala