Scala项目不会在Eclipse中编译; "无法找到主类."

Tho*_*ood 24 eclipse scala eclipse-plugin scala-ide

我已经从/ update-current安装了Eclipse 3.5.2和今天的Scala插件(这是Scala 2.8 final.)我可以编译并运行由单个单例对象组成的Scala项目,该对象实现main().

但是,如果一个项目包含更多的类,我收到"找不到主类"错误.

我试图寻找解决方案,我发现:

Eclipse正在寻找Main $类,而不是
Debug Configurations下的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
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我在Hello中嵌入HelloFrame的定义,它就可以了.这个片段完美运行:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

nin*_*cko 21

对我来说,问题是存在构建错误(请参阅"问题"选项卡),这会阻止编译; 哎呀!您看到错误的原因是尽管编译步骤失败,运行宏仍会继续,并尝试运行它期望存在的类文件; 它们不存在,因为存在阻止编译的构建错误,因此它说它找不到Main(未编译).

当构建成功完成时问题消失,即错误得到修复.

我想,从理论上讲,可能有更复杂的原因,你的构建没有成功完成,没有在Problems中列出.


Mat*_*ell 5

一种可能性是您尝试使用ctrl-F11启动,但是来自不同的类.

Scala Eclipse插件不遵循Java启动的默认值.在Preferences-> Run/Debug-> Launching中,有一些选项Launch Operation-> Always Launch启动先前选择的应用程序等.这在Scala eclipse插件中目前不起作用.要启动指定的main,您需要从该类的编辑器启动它.

为此提出了一个错误.http://scala-ide.assembla.com/spaces/scala-ide/tickets/1000023-scala-launch--does-not-follow-jdt-behaviour

编辑:现在(大部分)修复了这个问题.