Development/Java

Java 명령어 실행 시 파일 확장자를 제거하는 이유

8iggy 2021. 10. 21. 01:07

읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 사용해보면서 배운 점을 정리한 글입니다.

java filename 명령어 실행 시 확장자 제거 이유

javac filename.java 명령어를 수행하면 filename.class라는 바이트 코드가 담긴 바이너리 파일이 생성된다. 이 파일을 JVM에 전달하여 실행하기 위해서는 java filename 명령어를 실행해야 하는데 그 이유는 JVM이 file을 실행한다고 표현하지 않고 file이름을 가진 바이트코드에 main 메소드가 존재한다는 사실을 전달하는 의미이기 때문이다.

따라서 filename.class를 java.exe 명령어의 인자로 넘기면 filename을 package로 인식하고 class 확장자를 .class 파일의 파일명으로 인식하여 main 메소드가 없다는 에러나 메인 스레드의 메인 메소드를 찾을 수 없다는 NoClassDefFoundError를 출력하게 될 것이다.