关于在idea中导入sbt项目出现的问题

   sbt即Simple Build Tool——简单构建工具,sbt是scala项目的首选构建工具,也是play框架和activator实际使用的构建工具。在《Akka入门与实践》一书中随书源码项目全部使用sbt构建,而我在导入sbt项目时出现了好多问题,特此记录:

    1.安装sbt

    我们要使用sbt,就必须首先在本地安装一份,官网下载zip包,解压到一个目录就行;其次要在idea中安装sbt插件,这里要注意,在idea中的plugins里搜sbt,会出现一个sbt插件和一个scala语言插件,我们直接安装scala语言插件,因为现在scala语言插件已经集成了sbt功能,而如果你要是单独选择安装那个sbt插件的话,会无法导入sbt项目,所以不要选那个,直接选scala


    2.配置sbt 

    安装完插件后,重启idea,将idea中的sbt配置为本地sbt,参考以下地址来配置,不过要注意:他博客之所以安装的是那个单独的sbt插件,是因为他的idea是老版本(例如idea15或14),我用的是idea-2017.3.5和idea-2018.1.2,即最新版本只能安装那个scala语言插件,所以注意甄别

https://blog.csdn.net/zrc199021/article/details/73543210


    3.错误一

  java.lang.RuntimeException: Expected one of local, maven-local, maven-central, scala-tools-releases, scala-tools-snapshots, sonatype-oss-releases, sonatype-oss-snapshots, jcenter, got 'local  '. 

当你按照上面的博客配置sbt后,尤其是配置仓库地址后,我猜你也是直接复制粘贴的吧,那么这个错误是由于复制粘贴的时候每行后面多了一个空格,所以现在打开repositories文件,删掉每行后面的空格吧


    4.错误二

    Server access Error: sun.security.validator.ValidatorException: 

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target url=https://repo1.maven.org/maven2/…

这个错误是因为下载依赖时访问的仓库地址协议头为https,要验证证书;而sbt间接的使用了旧版本的httpclient-3.1来访问仓库,这个旧版本的httpclient-3.1默认没有为验证truststores(信任库)而去遵守java system properties。网上的解决思路是①使用代理②导入证书 ,我试过导入证书,发现并不可行,最后我想到了一点是上面配置sbt仓库地址的那个repositories文件,我们将local 替换为阿里云仓库,而阿里云仓库并不是https协议,那么为什么我配置了local仓库,而大多数情况下sbt却要去官方仓库去下载依赖呢,这个我暂时不明白,但是可以肯定的是要下载的依赖aliyun仓库都有,所以我干脆将repositories里面除了local以外,其他全去掉,这样他只能乖乖去aliyun仓库下载依赖了,最后项目导入成功:



    5.错误三

    unresolved dependency: org.scala-sbt#sbt;0.13.5: not found

要注意你本地安装的sbt是什么版本号,你要在project目录下的build.properties中将sbt.version改为你的版本号,例如在github上下载的源码中用的是0.13.5:

    而我自己本机上安装的是1.1.4版本,所以你就要改过来:

sbt.version=1.1.4


   参考地址:

https://stackoverflow.com/questions/41981320/scala-sbt-and-corporate-proxy-suncertpathbuilderexception/48671697#48671697

https://stackoverflow.com/questions/9210514/unable-to-find-valid-certification-path-to-requested-target-error-even-after-c

https://blog.csdn.net/jjshouji/article/details/79294572

https://blog.csdn.net/zrc199021/article/details/73543210

猜你喜欢

转载自blog.csdn.net/lvyuan1234/article/details/80222873