cen*_*ote 22 scala intellij-idea sbt
我只是想用SBT在Intellij上的Scala中的Scala中执行一个简单的Hello World应用程序,但是即使这样……看起来也太难了。
我按照此处的说明进行操作:https : //www.cloudera.com/tutorials/setting-up-a-spark-development-environment-with-scala/.html
我曾经与Eclipse和Maven一起工作...在这里,我使用的是Intellij和SBT,所以我尽力而为,但我有点迷茫。这是我所做的:
object HelloScala {
def main(args: Array[String]): Unit = {
println("Hello world!")
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试执行该main时,将导致以下错误:
错误:scalac:Scala SDK sbt中的Scala编译器类路径中的多个'scala-library * .jar'文件(scala-library-2.13.0.jar,scala-library-2.13.0.jar):org.scala-lang: scala库:2.13.0:jar
我的build.sbt:
name := "HelloScala"
version := "0.1"
scalaVersion := "2.13.0"
Run Code Online (Sandbox Code Playgroud)
我在文件>项目结构>库>编译器类路径中检查了编译器类路径:
文件:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar
文件:/// AppData / Local / Coursier /cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0/scala-compiler-2.13.0.jar
文件:/// AppData / Local / Coursier / cache /v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.0/scala-library-2.13.0.jar
文件:/// AppData / Local / Coursier / cache / v1 /https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.0/scala-reflect-2.13.0.jar
我试图从目标结构中的其他scala-library.jar中搜索目标目录,使缓存无效,通过删除它来重新生成.idea文件夹,然后让intellij重新创建它。我什么也没发现
真的...我不明白为什么scala库被两次引用。
如果我将scala版本从2.13.0更改为2.11.0,则存在相同的问题:
错误:scalac:Scala SDK sbt中的Scala编译器类路径中的多个'scala-library * .jar'文件(scala-library-2.11.0.jar,scala-library-2.11.0.jar):org.scala-lang: scala库:2.11.0:jar
但是!如果我在build.sbt中评论scala版本:
name := "HelloScala"
version := "0.1"
//scalaVersion := "2.11.0"
Run Code Online (Sandbox Code Playgroud)
然后,如果我清除目标目录,重新导入sbt项目并尝试执行,它将成功!在目标目录中,我有一个新的scala-2.12文件夹...它从哪里来?
有关信息,我使用的是Windows 10,Intellij 2019.2,JDK 1.8,SBT 13
任何帮助都非常感谢!
小智 28
尝试这个:
外部库> [右键单击] sbt:org.scala-lang:scala-library:xxx:jar>打开库设置>项目设置>库
有一个包含类,源代码和JavaDocs的部分。单击JavaDocs并使用上面的减号将其删除。单击确定。
重新导入您的sbt项目(在右侧的sbt工具栏上)。
仍然不确定为什么会发生错误或为什么会解决此错误。
本周末我一直在用全新安装的 IntelliJ IDEA 解决同样的问题。我尝试了不同版本的 IDE,以及上面建议的一些其他修复,但唯一似乎真正有效的解决方案是手动编辑自动生成的.idea/libraries/sbt__org_scala_lang_scala_library_2_13_0_jar.xml
文件以删除重复的 JAR 条目。
sbt
当我在我的 shell 中注意到这个对话框时,我终于在错误和新版本之间建立了联系:
[info] Welcome to sbt 1.3.0.
[info] Here are some highlights of this release:
[info] - Coursier: new default library management using https://get-coursier.io
[info] - Super shell: displays actively running tasks
[info] - Turbo mode: makes `test` and `run` faster in interactive sessions. Try it by running `set ThisBuild / turbo := true`.
[info] See https://www.lightbend.com/blog/sbt-1.3.0-release for full release notes.
Run Code Online (Sandbox Code Playgroud)
由于SBT 1.3.0介绍Coursier,并在IDEA生成的XML文件中的重复的JAR条目都存储在一个Coursier缓存目录,我还以为恢复到SBT 1.2.8可能会解决问题。
果然,我在使用 sbt 1.3.0 时只得到“Multiple 'scala-library*.jar' files”错误。我多次重新创建我的项目并且在使用 sbt 1.2.8 时没有看到错误。
归档时间: |
|
查看次数: |
1951 次 |
最近记录: |