当我运行scala应用程序时如何修复“NoClassDefFoundError:midterm / Main”?

时间:2013-03-10 19:01:29

标签: java scala noclassdeffounderror

我尝试编译此代码

import java.awt.Color
import javax.swing.JButton
import javax.swing.JPanel;


object Main{
    var panel = new JPanel
    var btn= new JButton
    def main(args:Array[Int]):Unit={
      btn.setBounds(80,80,80,80)
      btn.setBackground(Color.BLUE);
      panel.add(btn);
  }  
}

当我键入scalac Main.scala时,类文件已成功创建,但在scala Main之后 有像

这样的输出
java.lang.NoClassDefFoundError: midterm/Main
Caused by: java.lang.ClassNotFoundException: midterm.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: midterm.Main.  Program will exit.
Exception in thread "main" Java Result: 1

如何解决?

1 个答案:

答案 0 :(得分:2)

这似乎是一个包裹问题。确保Main.scala位于名为midterm的目录中。然后使用:

scalac midterm/Main.scala

来自包含midterm子目录的目录。还要确保该文件包含package声明:

package midterm

此外,您的main方法入口点方法应该有String数组而不是Int数组:

def main(args:Array[Int]):Unit={

应该是

def main(args:Array[String]):Unit={

通过这些更改,可以使用Scala 2.10.0编译好。