Java CLI 실행 오류 시(could not find or load main class …)

최대 1 분 소요

매번 Java는 이클립스에서만 컴파일하고 실행했었다. 이번에 WSL2로 리눅스(우분투) 환경을 구축하고 CLI 환경에 익숙해질겸 Java를 컴파일 및 실행을 해보았다.

  • VSCODE 상 파일은 다음과 같았다.

04_vscode file list

javac SinglyLinkedList.java

04_vscode javac

  • 컴파일 후 class파일들이 생성되었다.

04_vscode file list2

  • 여기서 실행을 해보았다.
java SinglyLinkedList

그랬더니 아래와 같이 오류가 난다.

04_vscode java

Could not find or load main class

  • 아직 리눅스에 익숙치 않아서 생긴 문제인가 싶어서 윈도우의 cmd로도 해보지만 결과는 같았다.
  • 다른 운영체제에서 같은 오류가 발생하는 것이라면 OS문제는 아니였다.
  • 그래서 구글링을 하기 시작했다.
  • 환경설정 CLASSPATH 문제라거나 VSCODE에서 Clean the java language server workspace를 해보랬지만 해결되지 않았다.
  • 그러던 중 해결책을 발견했다.

해결책은 의외로 간단했고 평소 IDE로만 실행해서 간과하고 있었던 부분이었다.

java는 full class name을 가지고 클래스 파일들을 찾기 때문에

parent directory(package root directory)에서 실행해야 한다고한다.

  • 쉽게 말해서 Package명.클래스명 or Package명/클래스명 으로 해줘야 한다.
java LinkedList.SinglyLinkedList

04_solution

결론적으로 다음과 같이 습관을 들이면 좋을 것 같다.

1.패키지안으로 들어가지말고 패키지밖의 경로에서 컴파일하고

javac LinkedList/SinglyLinkedList.java

2. 실행시에는 패키지명.클래스파일 or 패키지명/클래스파일로 실행

java LinkedList/SinglyLinkedList
    		or
java LinkedList.SinglyLinkedList

태그: ,

카테고리:

업데이트:

댓글남기기