💥 이번 에러는 Maven 프로젝트에서 클래스가 분명히 있는데도 import가 안 된다는 미스터리한 상황입니다.
직접 javac로 컴파일할 때 자주 만나게 되는, 실전 개발자라면 100% 한 번쯤은 겪는 오류죠.
❗ 에러 메시지
CrawlerMain.java:3: error: cannot find symbol
import com.koyn.crawler.AptApiFetcher;
^
symbol: class AptApiFetcher
location: package com.koyn.crawler
CrawlerMain.java:10: error: cannot find symbol
AptApiFetcher crawler = new AptApiFetcher();
^
symbol: class AptApiFetcher
location: class CrawlerMain
🔍 원인 분석
- javac로 하나의 파일만 컴파일하면
import
된 다른 클래스는 자동 컴파일되지 않음 - 또한 현재 디렉토리가 package 구조와 일치하지 않으면 import 오류 발생
- Maven은 이 문제를 자동 해결해주지만, javac는 세심하게 관리해야 함
🛠 해결 방법
✅ 1. 전체 소스 컴파일하기 (javac *.java)
javac com/koyn/crawler/*.java
또는 재귀적으로 전체 컴파일:
find . -name "*.java" > sources.txt
javac @sources.txt
➡️ 의존 클래스(AptApiFetcher 등)를 반드시 같이 컴파일해야 오류가 안 납니다.
✅ 2. package 경로와 디렉토리 일치 여부 확인
package com.koyn.crawler;
이 선언이 되어 있으면, 해당 파일은 반드시 src/com/koyn/crawler/
경로에 있어야 하며, 컴파일도 src
에서 수행해야 합니다.
✅ 3. Maven으로 전체 컴파일
Maven을 쓴다면 아래 명령어 한 줄로 해결됩니다:
mvn clean compile
➡️ Maven은 src/main/java
기준으로 전체 클래스 자동 인식 및 컴파일 진행
🧩 마무리 요약
cannot find symbol: class AptApiFetcher | 부분 컴파일 또는 패키지/경로 불일치 | 전체 컴파일 or Maven 사용 |
📌 다음 글 예고
👉 에러공장 3편 - method run()
호출 오류 및 Excepton
오타 에러 해결편!
https://koynalpha-dev.tistory.com/entry/error3
🏷️ 추천 태그
javac, Java, cannot find symbol, 컴파일 오류, 클래스 인식 실패, Maven, Java 패키지, Java import, 개발자 에러, AptApiFetcher, 에러공장