代码之家  ›  专栏  ›  技术社区  ›  Matt Sheppard

nosuchmethoderror:main在使用EclipseScala插件启动HelloWorld时

  •  4
  • Matt Sheppard  · 技术社区  · 16 年前

    我刚刚在玩scala,并安装了eclipse插件,如 http://www.scala-lang.org/node/94 ,但是在输入“hello world”测试示例并按照所述设置运行配置之后,我得到以下错误

    Exception in thread "main" java.lang.NoSuchMethodError: main
    

    作为参考,代码是

    package hello
    
    object HelloWorld extends Application {
      println("Hello World!")
    }
    

    我已经修改了一些明显的解决方案(添加了一个main方法,添加了一个带有main方法的singleton对象),但显然我做错了。

    有谁能让他们的测试例子发挥作用,或者指出我做错了什么?

    11 回复  |  直到 16 年前
        1
  •  4
  •   marc esher    16 年前

    我昨晚也碰到了同样的问题。我用A)固定了任何现有的Scala运行配置,然后通过(我不是开玩笑)在第一个卷曲支架之前添加了一个线段。

    我做的另一件事是进入现有的运行配置,并在“参数”选项卡中添加一些垃圾。反正我忽略了参数,所以它不会影响程序的输出,但是它让插件重新找到main

        2
  •  4
  •   brent.payne    16 年前

    我还用以下代码命中了此错误:

    package hello
    
    class HelloWorld extends Application {
      Console.println("Hello World!")
    }
    

    错误是使用 class 而不是 object ,当我切换到 对象 日食时它跑得很好。

        3
  •  2
  •   Alexander Stolz    16 年前

    我通过清理项目来解决问题,然后使用main方法进入类并使用strg+s(auto build on)构建它。很有魅力。

        4
  •  2
  •   PeterPeter    16 年前

    有点难看,但你可以

    package hello
    
    object HelloWorld {
      def main(args:Array[String]) {
        println("Hello World!")
      }
    }
    

    在一个文件hellowordsrc.scala(或者任何你喜欢的东西,而不是后面的“src”)中,可能会清理一次项目,然后eclipse应该运行它。“extends应用程序”在eclipse中从未对我起作用,但是插件在代码中寻找一个main方法,由于某种原因,该方法不能与文件名指定的名称相同

    干杯

        5
  •  2
  •   01es    16 年前

    也有同样的问题。我的解决办法是:

    • 转到运行->运行配置
    • 创建新的javaapplication配置,其中手动指定完整类名(例如hello.helloworld)
    • 应用并运行

    应该就是这样。

    编辑

    至于问题的原因,imho eclipse正在寻找要执行的文件helloworld.class。但是,它应该寻找的是helloworld$.class(或者相反的方式)。但这个假设可能是错误的…

        6
  •  2
  •   Leon Chen    15 年前

    我也有同样的问题。我是这样修复的:右键单击您的项目,选择“properties->java build path”,您可以看到“default output folder”是“your project”/ 箱子 “。改为“你的项目/ 班级 ,然后清理并重新生成项目。一些抱怨可能仍然会出现,但它会解决的-只要确保编译的“.class”文件是在“classes”文件夹下生成的

    我怀疑这与底层java的执行引擎/配置有关。不太确定,因为我不熟悉Java。

        7
  •  1
  •   starblue    16 年前

    scala插件有点不稳定。尝试关闭并重新打开项目,这通常会有帮助。

        8
  •  1
  •   Daniel C. Sobral    16 年前

    不幸的是,你没有做错什么。scala的eclipse插件已经有了更好的发展,但是它已经被重写,以利用最近的一些特性来实现更好的集成,而现在的版本是有缺陷的。

    现在,我推荐netbeans。或者是主意,如果你有钱的话。

        9
  •  1
  •   Antony Stubbs    16 年前

    netbeans工作正常,但也有问题。现在我有一个很好的Eclipse3.4+ScalaPlugin2.7.5,最终运行得非常好。我建议您对Eclipse3.4、Scala2.7.5进行干净的安装,清理您的项目等。 你用scala项目创建者创建了这个项目吗?即创建新项目->Scala项目? 当然,如果没有其他东西对你有用的话。

        10
  •  0
  •   user unknown    14 年前

    如果使用最新版本的scala(2.9.*),则应使用

    object HelloWorld extends App {
      println("Hello World!")
    }
    

    应用程序,而不是应用程序。应用是2.8或2.7方式。这是否是唯一的问题是另一个问题。

        11
  •  -3
  •   Azad Omer    14 年前

    简单回答: 如果您使用(netbeans或eclips),请重新启动程序 其他的 把这个班移到另一个班也许会有帮助

    推荐文章