IntelliJ IDEA 内で Scala スクリプトを実行するにはどうすればいいですか? 質問する

IntelliJ IDEA 内で Scala スクリプトを実行するにはどうすればいいですか? 質問する

以下は簡単な Scala スクリプトです:

object test {
  def hi() { print("hi there from here") }
}


test.hi()

コマンドラインからは、期待どおりに動作します。

scala /shared/scaladem/src/main/scala/test.scala
Loading /shared/scaladem/src/main/scala/test.scala...
defined module test
hi there from here
Welcome to Scala version 2.10.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_65).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

しかし、Intellij 内ではコンパイルエラーが発生します。右クリック | test.scala を実行

expected class or object definition
test.hi()
^

ちなみに、Scala ワークシートとして実行することも試しました。これははるかにひどい結果でした。大量のゴミが出力され、コンパイルに近づくことすらできませんでした。

アップデート: 古いですが似たような質問があるようです:

Intellij Idea 10 で Scala コードを実行する方法

実行構成に入り、指示に従って「Make」のチェックを外しました (面倒でしたが、仕方ありません)。

しかし、その変更を行った後、別のエラーが発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Either
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113)
Caused by: java.lang.ClassNotFoundException: scala.Either
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 3 more

注: Scala ライブラリは適切にセットアップされています。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

もう一つの更新(以下の @lhuang のコメントの後)私は、最初から別のプロジェクトを作成するという提案に従いました。その場合、Scalaワークシートは正常に動作しました(test.sc)。しかし、scalaスクリプト(「scala test.scala」を介してコマンドラインを実行すると動作します)はまだないこの新しい「scala」プロジェクトでも機能します。

ベストアンサー1

ここでの答えは、次の項目の組み合わせです。

  • (a) まったく新しいScalaプロジェクトを作成する(@lhuangの提案に従って)
  • (b) スクリプトを実行するときは、実行構成に移動して Make ステップを削除する必要があります (「関連する」SOF の質問に記載されているとおり)。

これは、Intellij とその Scala プラグインの粗い部分を示しています。特に、Scala を Java と統合したい場合、現時点では Intellij を使用しても可能かどうかはわかりません (Scala を組み込もうとするほとんどの Java プロジェクトでは、頻繁に新しい Scala プロジェクトを作成する必要があるため、実現は困難です)。

しかし、Scala ファーストのプロジェクトでは、これは実行可能であると思われます。

おすすめ記事