ScalaでSBTを使用してIntellijで単純な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!")
}
}
そのメインを実行しようとすると、次のエラーが発生します。
エラー:scalac:Scalaコンパイラクラスパス= Scala SDK sbt:org.scala-lang:scala-library:2.13.0:jar
私のbuild.sbt:
name := "HelloScala"
version := "0.1"
scalaVersion := "2.13.0"
ファイル>プロジェクト構造>ライブラリ>コンパイラクラスパスでコンパイラクラスパスを確認しました。
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0/scala-compiler-2.13。 0.jar
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.0/scala-library-2.13。 0.jar
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.0/scala-reflect-2.13。 0.jar
ターゲットディレクトリを削除し、キャッシュを無効にし、.ideaフォルダーを再生成して削除し、intellijに再作成させ、プロジェクト構造内の他のscala-library.jarから検索しました。何も見つかりません...
本当に...なぜscala-libraryが2度参照されるのか分かりません。
scalaバージョンを2.13.0から2.11.0に変更すると、同じ問題が発生します。
エラー:scalac:Scalaコンパイラクラスパス= Scala SDK sbt:org.scala-lang:scala-library:2.11.0:jar
だが ! build = sbtのscalaバージョンをコメント化すると、
name := "HelloScala"
version := "0.1"
//scalaVersion := "2.11.0"
次に、ターゲットディレクトリをクリアし、sbtプロジェクトを再インポートして実行しようとすると、機能します!そして、ターゲットディレクトリに、新しいscala-2.12フォルダーがあります。
詳細については、私はWindows 10、Intellij 2019.2、JDK 1.8、SBT 13を使用しています
どんな助けでも本当に感謝しています!
これを試して:
外部ライブラリ> [右クリック] sbt:org.scala-lang:scala-library:x.x.x:jar> Open Library Settings> Project Settings> Libraries
クラス、ソース、JavaDocsのセクションがあります。 [JavaDocs]をクリックして、上記のマイナス記号で削除します。 OKをクリックします。
Sbtプロジェクトを再インポートします(右側のsbtツールバー上)。
それでも、エラーが発生する理由や、エラーが修正される理由がわかりません。
私は今週末、IntelliJ IDEAの新規インストールで同じ問題と戦っています。 IDEのさまざまなバージョンを試してみましたが、上記で提案された他の修正の一部を試しましたが、実際に機能しているように思われた唯一の解決策は、自動生成された.idea/libraries/sbt__org_scala_lang_scala_library_2_13_0_jar.xml
ファイルを使用して、重複するJARエントリを削除します。
シェルでこのダイアログに気付いたとき、ようやくエラーと新しいsbt
バージョンを関連付けました。
[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.
Sbt 1.3.0以降、Coursierが導入され、IDEAで生成されたXMLファイルの重複したJARエントリはすべてCoursierキャッシュディレクトリ。sbt1.2.8に戻すと問題が解決する可能性があると思いました。
案の定、sbt 1.3.0を使用しているときに "Multiple 'scala-library * .jar' files"エラーのみが表示されます。プロジェクトを複数回再作成しましたが、sbt 1.2.8を使用してもエラーは発生しません。
build.sbt
にscalaVersionプロパティがない場合、sbt
はproject/build.sbt
で指定されたバージョンを使用します