2번의 경우, Java 실행기가 클래스를 찾지 못해서 발생하는 오류인데, 그렇다면 Java 실행기가 어떤 원리로 작동하길래 클래스가 패키지에 속하지 않으면 오류가 발생하는건가요?
Java 실행기는 클래스 파일을 실행할 때 클래스의 위치를 찾아야 합니다.클래스가 패키지에 속하지 않으면 Java 실행기가 클래스를 찾는 데 어려움이 생깁니다. 이것은 Java의 클래스 경로(classpath) 및 패키지 구조에 관련된 원리로 설명될 수 있습니다.

이 패키지 구조는 클래스로더(Class Loader)에 의해 사용되며, 클래스로더는 클래스 파일을 로드하고 실행하는 역할을 합니다. 클래스로더는 클래스 파일을 찾을 때 클래스 경로(classpath)를 검색합니다. 클래스 경로에는 클래스 파일이 위치한 디렉토리와 JAR 파일 등이 포함됩니다.
만약 클래스가 패키지에 속하지 않는다면, 이 클래스는 클래스 경로의 어떤 디렉토리나 JAR 파일 안에 위치하지 않습니다. 따라서 Java 실행기는 해당 클래스를 찾을 수 없게 되며 "Editor does not contain a main type"과 같은 오류가 발생하게 됩니다.
따라서 Java에서는 클래스 파일이 패키지 구조에 따라 위치하도록 하는 것이 중요하며, 이를 지키지 않으면 클래스 로딩 및 실행 과정에서 오류가 발생할 수 있습니다.