본문 바로가기



프로그래밍/JAVA

[JAVA] 이클립스에서 현재 작성중인 클래스 이전 클래스가 자꾸 실행되는 경우

이클립스로 코드 작성할때, 현재 작성중인 클래스를 실행 시도시, 이전 작업에서 실행한 클래스가 작동하여 현재 작성중인 클래스의 실행이 안되는 경우가 있습니다.  console 창에서도 이전 작성 코드의 System.out.print 구문이 출력되겠죠. 

클래스 실행 이전의 깨끗한 메뉴 화면

이럴때는 다음과 같이 조치합니다. 

먼저 지금 JVM이 실행중이라면, 위의 버튼중에 정지버튼에 빨간불이 들어와 있을것입니다. 이 버튼을 눌러 전체 실행을 중지 시킵니다. 

이클립스의  초록색 실행 버튼옆에 드롭다운 단추 ▼ 를 누릅니다.

Rus Configurations... 를 누릅니다. 

계속 선 실행되던 클래스 파일로 작성된 파일이름의 자바 응용프로그램을 찾습니다.
제 경우에는 Java Application - StaticApp가 실행되고 있었네요. 이 파일에 에러가 있었는데 그냥 두고 실행했더니 계속 내부적으로 실행되면서 지속적으로 Run되면서 현재 작성중인 클래스파일의 실행을 방해한것 같네요.
해당 앱을 클릭한 다음 마우스 오른쪽 버튼을 누릅니다.  Delete를 누릅니다. 

Delete the selected launch configuration? 메시지에서 Delete를 누릅니다.  

이제 지금 작성중인 창으로 다시 돌아가서 Run 해봅니다. 

이런 메시지가 나오고 실행안되면 main method가 없어서일 확률이 높습니다. 메인 메소드를 잘 타이핑 했는지 확인합니다. 특히 static이 없이 public void main(String[] args)로 되어있는지 확인합니다.  public static void main(String[] args) 입니다.

자바 버전 7가지는 main method 가 없어도 실행은 되었으나, 자바 8버전이후에는 main method가 있는 class파일(이클립스에서는 .java파일)이 없으면 아예 실행이 불가하도록 변경되었습니다. 즉 컴파일러가 main method를 먼저 탐지해서 해당 블록이 없는 경우는 실행하지 않음. 그래서 이전 main method가 있는 실행 파일이 계속 실행되는 것 입니다.