[Spring Boot] 16. 자바는 패키지 안에 있어야 실행이 된다!
이번에는 최근에 저지를 실수에 대해서 이야기하려고 한다.
때는 바야흐로 엘라스틱 서치 공부를 위해서 새로운 프로젝트를 만들었을 때이다.
평소와 같이 home.html을 만들고 Controller를 만들어서 "/" get 요청이면, 홈 화면으로 이동하는 코드를 작성하였다.
하지만 404에러가 뜨고 말았다!
실행은 잘 되지만 컨트롤러를 실행하지 못하는 느낌이 들어서 이상이 없는 프로젝트와 계속 비교해보았다.
그 결과 ... Controller 파일을 만들 때, com.example.프로젝트명 디렉토리 밑이 아닌 java 디렉토리 바로 및에 생성을 한 것이 문제였다.
src
└── main
└── java
└── com
└── example
└── 프로젝트명
자바 프로젝트의 패키지 구조는 일반적으로 위와 같다.
package com.example.프로젝트명;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
그리고 스프링 부트를 실행 시, main 함수에서 패키지를 불러온다.
이 때, com.example.프로젝트명에 해당하는 디렉토리를 불러오기 때문에 com.example.프로젝트명 아래에 속하지 않으면 불러올 수 없다.
src
└── main
└── java
└── Controller.java
└── com
└── example
└── 프로젝트명
따라서 이전에는 이와 같이 컨트롤러를 배치했기 때문에 컴파일러가 인식하지 못했던 것이다.
이런 어이 없는 실수를 확인한다고 꽤나 시간을 썼던 것 같다 하하 ..
앞으로는 파일 생성 시, 조금 더 신경을 쓰도록 하자!