2013-01-18 2 views
2

다른 실행 메서드를 재정의하려고하는 실행 메서드가 있습니다. 하지만 그것은 "Class not found Exception"을 얻기 때문에 발생하지 않기 때문에 메소드를 실행하기 전에 전달됩니다."클래스 예외 오류"스레드 내에서 스레드 실행

Here's 실행 방법 내 수업

나는이 이상 run 메소드를 타고 얻을 수있는 방법.

실행을 위해 호출해야하는 클래스. 코드에서

public abstract class MessageProcessor implements Runnable { 
private Collection<KpiMessage> fetchedMessages; 
private Connection dbConnection; 
Statement st = null; 
ResultSet rs = null; 
PreparedStatement pstmt = null; 
private Collection<KpiMessage> outgoingQueue; 


public KpiMsg804 MessageProcessor(Collection<KpiMessage> outgoingQueue, Connection 
dbConnection){ 
    this.outgoingQueue = outgoingQueue; 
    this.dbConnection = dbConnection; 
    return (KpiMsg804) fetchedMessages; 
} 

    public Collection<KamMessage> generate(Collection<KamMessage> outgoingQueue) 
    { 
    while(true){ 
     try { 

      while (rs.next()) { 
       KamMessage filedClass = convertRecordsetToPojo(rs); 
       outgoingQueue.add(filedClass); 

      } 

      for (KamMessage pojoClass : outgoingQueue) { 
       KamMsg804 updatedValue = createKamMsg804(pojoClass); 
       System.out.print(" " + pojoClass.getSequence()); 
       System.out.print(" " + pojoClass.getTableName()); 
       System.out.print(" " + pojoClass.getAction()); 
       System.out.print(" " + updatedValue.getKeyInfo1()); 
       System.out.print(" " + updatedValue.getKeyInfo2()); 
       System.out.println(" " + pojoClass.getEntryTime()); 
      } 
      return outgoingQueue; 

     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 

}

+4

완전한 스택 추적을 보여주세요. –

+0

당신은'MessageProcessor' 클래스를 정의 했습니까? – pap

+1

클래스 경로에 MessageProcessor 클래스가 있습니까? –

답변

3

당신은 클래스 내에 기본 가시성 필드를 생성하고, run() 메서드를 재정의되지 않습니다. 그냥 붙어 :

MessageProcessor processor = new MessageProcessor() { 
    @Override 
    final public void run() { 
    MessageProcessor(outgoingQueue).generate(outgoingQueue);      
    } 
}; 

그리고 외부 MessageProcessor 선언을 제거하십시오.

public class PollingSynchronizer { 
    public static void main(String[] args) { 
    MessageProcessor message = new MessageProcessor() { 
     MessageProcessor message = new MessageProcessor() { 
     public void run() { 
      System.out.println("new run"); 
     } 
     }; 
    }; 

    new Thread(message).start(); 
    } 
} 

class MessageProcessor implements Runnable { 
    public void run() { System.out.println("old run"); } 
} 

가 정말 덮어 쓰기되지 않는 최초의 MessageProcessor::run() 때문에 old run을 인쇄합니다 :

나는 코드의 일부를했다.

+0

고맙습니다. – maddy

관련 문제