2015-10-20 56 views
1

在执行下面的类时,将抛出“线程'main'java.lang.NoClassDefFoundError”中的异常。我预计这个例外将被抛出为“MainMethodNotFoundException”。线程“main”中的异常java.lang.NoClassDefFoundError而不是MainMethodNotFound

为什么noClassDefFoundError在这里被抛出?

public class TestingSwitch { 
    public static void main(String args) { 
     int cnt = 1; 
     switch(cnt){ 
      default: 
       System.out.println("Welcome"); 
      case 1: 
       System.out.println("One"); 
       break; 
      case 2: 
       System.out.println("Two"); 
       break; 
     } 
    } 

}

+0

你是怎么执行的这个代码?你能告诉我们你用来执行java的命令吗? – jfcorugedo

+0

伙计 我很确定主要方法签名是错误的。 但我期待的答案是:为什么“NoClassDefFoundError”而不是MainMethodNotFound? –

+0

是的,我明白了。但它取决于你用来执行类的命令。你确定你在控制台中键入的类是否存在并被编译? – jfcorugedo

回答

1

错方法签名。

变化:

public static void main(String args) 

要:

+0

总是包含java.lang' – jfcorugedo

1

你必须改变public static void main(String args)public static void main(String[] args)

来看,这种

public class Test { 

     public static void main(String[] args) { 
      int cnt = 1; 
      switch(cnt){ 
       default: 
        System.out.println("Welcome"); 
       case 1: 
        System.out.println("One"); 
        break; 
       case 2: 
        System.out.println("Two"); 
        break; 
      } 
     } 

} 
1

这里是你的错误:

public static void main(String args) 

你必须写

0

我试过你的代码,它给了我一个不同的错误。

这是我试过的步骤:

  1. 创建一个类TestingSwitch

    vi TestingSwitch.java 
    
  2. 放在那里,你的内容

    $ cat TestingSwitch.java 
    public class TestingSwitch { 
        public static void main(String args) { 
         int cnt = 1; 
         switch(cnt){ 
         default: 
          System.out.println("Welcome"); 
         case 1: 
          System.out.println("One"); 
          break; 
         case 2: 
          System.out.println("Two"); 
          break; 
         } 
        } 
    } 
    
  3. 编译类

    javac TestingSwitch.java 
    
  4. 现在有目录中的两个文件

    -rw-r--r-- 1 xxxx xxxx 518 Oct 26 11:33 TestingSwitch.class 
    -rw-r--r-- 1 xxxx xxxx 373 Oct 26 11:33 TestingSwitch.java 
    
  5. 尝试执行类:

    $ java TestingSwitch 
    Error: Main method not found in class TestingSwitch, please define the main method as: 
    public static void main(String[] args) 
    or a JavaFX application class must extend javafx.application.Application 
    

我使用Oracle JDK 1.8:

java version "1.8.0_31" 
    Java(TM) SE Runtime Environment (build 1.8.0_31-b13) 
+0

是的,我也在Java 8中尝试过.......它抛出Main方法没找到,就像你的一样 –

相关问题