我已经安装了Eclipse 3.5.2,并从 /update-current(即Scala 2.8 final)安装了Scala插件。我可以编译并运行由实现main()的单个Singleton对象组成的Scala项目。

但是,如果一个项目包含更多类,我会收到“找不到主类”错误。

我尝试搜索解决方案,发现:

Eclipse正确地寻找主要$类,而不是主要类
*在调试配置下,我的主类正确地识别为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
    }
}
有帮助吗?

解决方案

对我来说,问题在于有一个构建错误(请参见问题选项卡),该错误正在阻止汇编;哎呀!您看到错误的原因是,尽管汇编步骤失败了,但运行宏仍在进行中,并尝试运行期望在那里的类文件;它们不存在,因为存在构建错误以防止编译,因此它说它找不到主(未编译)。

当构建能够成功完成时,问题就会消失,IE错误是固定的。

我想,从理论上讲,您的构建未成功完成的原因可能更复杂,而没有在问题中列出。

其他提示

一种可能性是您尝试使用CTRL-F11启动,但要从其他类别开始。

Scala Eclipse插件不遵守Java启动的默认值。在preverences-> run/debug->启动中,有一些选项启动操作 - >始终启动先前选择的应用程序等。当前,该选项在Scala Eclipse插件中不起作用。要启动指定的主体,您需要从班级编辑器启动它。

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

编辑:这是(主要)修复的。

对我来说,这是日食的特定问题。我注意到了 .class 文件根本不是构建的。所以 bin 目录没有编译课程。当我使用 *.sbt手动编译 *.scala文件并将其复制到 bin 目录正常工作。我尝试了不同的技巧和技巧,直到我才起作用 重新安装Eclipse中的Scala插件 .

我将通过executig“ project-> clean ..”解决类似的问题,下一个自动构建。

我与我自己制作的Java应用程序有相同的错误消息。

问题是我删除了(尽管在Eclipse) 爪哇构建路径, ,不从Java构建路径(Project的属性窗口)删除它。当我这样做时,课程可以编译并再次运行。

确保 .class 存在文件,通常低于 bin 目录。

特别是,如果您在同一项目中的无关文件中存在错误,则汇编可能会失败,没有 .class 文件将被生成。

可能会有包含错误的项目添加到应用程序的构建路径中,以阻止成功编译的完成。在运行应用程序之前,请确保从构建路径中删除任何此类项目。

删除这些项目为我解决了问题。

您是否有适当的构建工具设置?像SBT一样,您安装了它吗?

您可以通过$ sbt- version检查其版本

如果不是设置,您可以从这里下载 http://www.scala-sbt.org/download.html

安装后,您可能必须重新启动日食。

只需复制xxx.scala文件代码即可。删除软件包并创建一个新的Scala类。粘贴XXX.Scala代码。 (如果您使用的是Maven,请进行Maven清洁并构建。)再次运行配置。这对我有用。

我已经面对这个问题。我刚刚删除了软件包名称,创建了Scala类,编写了相同的代码,将构建设置为“自动构建”。最后,它的工作原理很好。

检查scala-ide.log

对我来说,问题是有错误:

appdata local temp sbt_10d322fb xsbt className.scala:16:错误:找不到:找不到:value enteringphase enteringphase enteringphase(currentrun.flattenphase.next)

如果您使用的是Intellij,则将目录标记为源根

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top