经典--->线程“main”中的异常java.lang.NoSuchMethodError:main

时间:2011-02-08 21:31:31

标签: java

  

可能重复:
   Exception in thread “main” Java.lang.NoSuchMethodError: main ??

public class InsertionSort
{
public static void main ( int[] a)
{
    int j;
    for( int p=1 ; p<a.length ; p++)
    {
        int tmp = a[p];
        for( j=p ; j>0 && tmp<a[j-1] ; j--)
        {
            a[j] = a[j-1];
        }
        a[j] = tmp;
    }
}
}

这发生在终端。 (如果重要的话,我在Mac上) javac InsertionSort.java; java InsertionSort 线程“main”中的异常java.lang.NoSuchMethodError:main

4 个答案:

答案 0 :(得分:3)

你需要一个合适的main()来使类可以运行。一个main方法应该有一个string数组作为唯一的参数,你有一个int数组。

因此,要解决它,请将其重新声明为“public static void main(String [] args)”并在方法中执行整数解析。 java和OS都不会为你做转换。

答案 1 :(得分:1)

public static void main (String[] arg)

main接受字符串数组,而不是int数组。

答案 2 :(得分:1)

JVM查找public static void main(String[])签名,而不是以int[]为参数的主方法。

答案 3 :(得分:1)

如果你这样做会运行:

public static void main ( String[] args)
{
    int[] a = new int[args.length];
    for(int i = 0; i < args.length; i++){
        a[i]=Integer.parseInt(args[i]);
    }
    int j;
    for( int p=1 ; p<a.length ; p++)
    {
        int tmp = a[p];
        for( j=p ; j>0 && tmp<a[j-1] ; j--)
        {
            a[j] = a[j-1];
        }
        a[j] = tmp;
    }
}

一个main方法,需要一个String数组,你需要一个int数组,所以我们只需将一个转换为另一个。