반응형
Java 클래스 파일 위치 찾기 스크립트 (.class 또는 .jar 내부 포함)
Java 프로젝트에서 특정 클래스가 어디에 존재하는지, 특히 클래스 파일이 폴더 안에 존재하는지 또는 어떤 JAR 파일에 포함되어 있는지 확인해야 할 때가 많습니다.
이 스크립트는 다음과 같은 상황에서 유용하게 사용할 수 있습니다:
✅ 사용하는 이유
- 특정 클래스가 누락되었는지 확인
- 동일한 클래스가 여러 위치(JAR)에 존재하는지 확인 (의존성 충돌 분석)
- 클래스 로딩 순서를 점검하고 싶을 때
- 배포 패키지(JAR/WAR)에 해당 클래스가 포함되어 있는지 검증
✅ 사용법
# 스크립트 실행 권한 부여
chmod +x find-class.sh
# 실행 형식
./find-class.sh <검색 시작 경로> <클래스 이름>
# 예시
./find-class.sh /opt/app com.example.MyClass
입력한 클래스 이름은 FQCN (Fully Qualified Class Name) 으로 작성해야 합니다.
예: com.example.util.JsonUtil
✅ 출력 예시
>> 클래스 파일명: com/example/util/JsonUtil.class
>> 검색 경로: /opt/app
[1] 폴더 내 직접 존재하는 .class 파일:
/opt/app/build/classes/com/example/util/JsonUtil.class
[2] JAR 파일 내 존재하는 .class 파일:
✓ /opt/app/lib/util-common.jar : contains com/example/util/JsonUtil.class
✅ 스크립트 코드
#!/bin/bash
# 사용법 안내
if [ -z "$1" ] || [ -z "$2" ]; then
echo "사용법: $0 <검색 루트 경로> <FQCN 클래스명>"
echo "예시: $0 /opt/app com.example.MyClass"
exit 1
fi
SEARCH_DIR=$1
CLASS_NAME=$2
# 클래스 경로를 파일 경로로 변환
CLASS_PATH=$(echo "$CLASS_NAME" | tr '.' '/')".class"
echo ">> 클래스 파일명: $CLASS_PATH"
echo ">> 검색 경로: $SEARCH_DIR"
echo ""
# 1. 폴더 내에 .class 파일 직접 존재 여부
echo "[1] 폴더 내 직접 존재하는 .class 파일:"
find "$SEARCH_DIR" -type f -path "*$CLASS_PATH" 2>/dev/null
# 2. JAR 파일 내 존재 여부
echo ""
echo "[2] JAR 파일 내 존재하는 .class 파일:"
find "$SEARCH_DIR" -type f -name "*.jar" 2>/dev/null | while read -r jar; do
if jar tf "$jar" | grep -q "$CLASS_PATH"; then
echo "✓ $jar : contains $CLASS_PATH"
fi
done
✅ 참고
jar tf
명령은.jar
파일 내부를 목록으로 출력- JDK가 설치된 환경이어야
jar
명령 사용 가능 - Java의 클래스 로딩 충돌 문제를 분석할 때도 유용합니다
반응형
'Application Servers & Java' 카테고리의 다른 글
[장애 사례] JBoss 세션 저장 시 NotSerializableException 발생 원인과 해결 (1) | 2025.05.15 |
---|---|
[오류 해결] Invalid URL encoding 에러 원인과 해결 방법 (Spring + Tomcat 환경) (0) | 2025.05.14 |
[오류 해결] Unable to get managed connection for java:/jdbc/xxx 에러 원인과 해결 방법 (0) | 2025.05.14 |
리눅스에서 CPU 사용량이 높은 자바 쓰레드(Thread) 찾는 방법 (0) | 2025.05.13 |
NullPointerException 원인 분석 방법 (0) | 2025.05.13 |