我已经从/update-current 安装了 Eclipse 3.5.2 和今天的 Scala 插件(这是 Scala 2.8 final。)我可以编译和运行由实现 main() 的单个单例对象组成的 Scala 项目。
但是,如果项目包含更多类,我会收到“找不到主类”错误。
我尝试寻找解决方案,我发现:
Eclipse 正在正确查找 Main$ 类,而不是 Main 类
* 在调试配置下,我的主类被正确识别为 mypackage.Main
* 我的插件是最新的,推荐用于我的 Eclipse 版本
* 清理、重启等无济于事。
同一个项目将使用 scalac 进行编译。
感谢您提供有关如何解决此问题的任何想法。
编辑:MatthieuF 建议我应该发布代码。
此代码段产生错误。这不是最惯用的代码,但我以这种方式编写它来测试我的环境。我将它作为单个文件和单独的文件进行了尝试。它确实适用于 scalac。
import swing._
class HelloFrame extends Frame {
title = "First program"
contents = new Label("Hello, world!")
}
object Hello {
val frame = new HelloFrame
def main(args : Array[String]) : Unit = {
frame.visible = true
}
}
但是,如果我将 HelloFrame 的定义嵌套在 Hello 中,它就可以工作。这段代码完美运行:
import swing._
object Hello {
class HelloFrame extends Frame {
title = "First program"
contents = new Label("Hello, world!")
}
val frame = new HelloFrame
def main(args : Array[String]) : Unit = {
frame.visible = true
}
}
最佳答案
对我来说,问题是存在阻止编译的构建错误(请参阅问题选项卡);哎呀!您看到错误的原因是尽管编译步骤失败,但运行宏仍在继续,并尝试运行它期望在那里的类文件;它们不存在,因为存在阻止编译的构建错误,所以它说它找不到 Main(未编译)。
当构建可以成功完成时,问题就会消失,即错误被修复。
我想,从理论上讲,您的构建未成功完成可能有更复杂的原因未在问题中列出。
关于eclipse - Scala 项目不会在 Eclipse 中编译; "Could not find the main class.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3953468/