【发布时间】:2013-11-20 04:03:55
【问题描述】:
这是一个简单的 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 工作表运行。那更糟糕 - 大量的垃圾输出,甚至没有接近编译。
更新:似乎有一个较旧但类似的问题:
How to run Scala code in Intellij Idea 10
我进入运行配置并按照指示取消选中“制作”(这很麻烦,但就这样吧..)
但是在进行更改后,我得到了一个不同的错误:
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 脚本(通过 "scala test.scala" 运行命令行时有效)仍然不工作。
【问题讨论】:
-
它应该在 Scala 工作表中工作。你能尝试创建一个新的干净的 Scala 并使用 Scala 主配置吗?
-
@lhuang。 “一个新的干净的 Scala”是什么意思?
-
我的意思是你可以尝试创建一个新的 Scala 项目。
-
@lhuang 你说得对。创建新的 scala 项目然后在 Worksheet 中运行可以正常工作。麻烦的是,通常需要“您必须创建一个新的 Scala 项目”才能让所有 scala 正常工作。它还创建 561 BLANK LINES,不知道为什么。
-
是的,创建一个新的 Scala 项目不应该是解决方案。但是,大多数情况下,这种错误是由一些无效的配置引起的。我们很难弄清楚在哪里。现在,您可以让它在一个干净的项目中工作。这样您就可以比较这两个项目,以了解之前的项目发生了什么。
标签: scala intellij-idea