java.lang.NoSuchMethodError:线程“main”中的主要异常

时间:2011-02-07 02:11:25

标签: java nosuchmethoderror

  

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

我的主要语法是正确的。还有什么可能是问题?

public class BuildHeap
{       
  int a[]={1,2,6,3,5,1,7,8,4,9};

  public void build()
  {
      for(int i=5;i<=1;i--)
      {
         heapify(a,i);
      }
  }

  public void heapify(int a[],int i)
  { 
    System.out.print("hello");
    int j,temp,rchild,lchild;
    if(i<5)
     {
        if(2*i<5)
            lchild=a[(2*i)+1];
        if((2*i)+1<4)
            rchild=a[(2*i)+2];

        if(lchild>rchild)
            j=(2*i)+1;
        else
            j=(2*i)+2;

        if(a[i]<a[j])
         {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
            heapify(a,j);

} } }

class Heap
{
    public static void main(String[] args) 
    {
        BuildHeap bh=new BuildHeap();
        bh.build();
        for(int i=0;i<10;i++)
            System.out.print(bh.a[i]+" ");
    }
}

2 个答案:

答案 0 :(得分:3)

您需要将main方法放在公共类BuildHeap中(而不是包 - 私有类Heap)。或者您可能只是在命令行中指定了错误的类名。同样,main位于Heap,而不是BuildHeap

答案 1 :(得分:1)

最可能的原因应该是您的班级名称和文件名不匹配。 创建一个包含Heap类的新文件,文件名为Heap.java。 将BuildHeap类保存在同一包中的不同文件中。运行堆。它应该工作。 否则,从公共类更改BuildHeap类,并将Heap类设置为public。

更好的方法是将不同文件中的类分开。