2011-02-07 7 views
-1

Possible Duplicate:
Exception in thread “main” java.lang.NoSuchMethodError: mainjava.lang.NoSuchMethodError : 스레드의 주요 예외 "주"

내 주요 구문은 올바른 것입니다. 그 밖의 무엇이 문제 일 수 있습니까?

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]+" "); 
    } 
} 
+1

'Heap' 또는'BuildHeap'을 메인 클래스로 실행하려고합니까? 'BuildHeap'에는'main'이 없기 때문에이 문제가 발생할 수 있습니다. 또한 '힙'은 '공개'로 표시되지 않아 관련이있을 수 있습니다. – templatetypedef

+0

이 커뮤니티 위키 질문은이 일반적인 문제의 가능한 원인을 나열합니다 : http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main –

답변

1

가장 가능성있는 원인은 클래스 이름과 파일 이름이 일치 doesnot 것을해야한다. Heap 클래스를 포함하는 새 파일을 만들고 파일 이름을 Heap.java로 지정하십시오. 동일한 패키지의 다른 파일에 BuildHeap 클래스를 유지하십시오. 힙을 실행하십시오. 그것은 작동해야합니다. 그렇지 않으면 public 클래스에서 BuildHeap 클래스를 변경하고 Heap 클래스를 public으로 설정하십시오.

더 나은 방법은 다른 파일에서 클래스를 분리하는 것입니다.

+0

@ 모두에게 감사드립니다. 답장! – Ava

+0

그게, 됐어 :) 고마워 – Ava

+0

@vartika : 오신 것을 환영합니다! – aNish

3

public 메서드 BuildHeap (package-private 클래스가 아닌 Heap)에 main 메서드를 넣어야합니다. 또는 명령 줄에 잘못된 클래스 이름을 지정했을 수도 있습니다. 다시 말하지만, 메인은 이 아니라 Heap입니다.

관련 문제