# Classpath를 설정해야 하는 이유
Classpath 는 Java 프로그램이 실행될 때 JVM(Java Virtual Machine)이 클래스를 찾는 데 사용하는 경로를 의미한다. Classpath를 올바르게 설정하면 JVM이 Java 애플리케이션에서 필요한 모든 클래스와 리소스를 적절하게 로드하고 사용할 수 있다.
Windows 운영 체제에서 명령줄 길이 제한은 약 32,768자 이기 때문에, 클래스패스에 많은 JAR 파일이 포함된 경우 이 한계를 초과하게된다. ( Mac OS의 경우 명령줄 길이 제한은 일반적으로 약 262,144자 )
Classpath를 올바르게 설정하지 않으면, Java 애플리케이션은 ClassNotFoundException 이나 NoClassDefFoundError와 같은 오류를 발생시킬 수 있다. 이는 JVM이 애플리케이션이 필요로 하는 클래스를 찾지 못할 때 발생하는 오류이다. 따라서, 애플리케이션이 의존하는 모든 클래스와 라이브러리를 포함하도록 Classpath를 정확하게 설정하는 것이 중요하다.
클래스 로딩
Java Application이 실행될 때 JVM은 애플리케이션에서 필요한 클래스 파일( .class )을 찾아야 합니다. Classpath는 JVM이 이러한 클래스 파일을 어디에서 찾아야 하는지 알려줍니다.
라이브러리 참조
Java 애플리케이션은 종종 외부 라이브러리나 JAR(Java ARchive) 파일에 의존합니다. 이러한 라이브러리와 JAR 파일이 Classpath에 포함되어야 JVM이 이를 찾아서 사용할 수 있습니다.
리소스 파일
Java 애플리케이션이 XML, 속성 파일, 이미지 파일 등과 같은 리소스 파일을 사용할 때도 Classpath가 사용됩니다. 이러한 파일들이 Classpath에 포함되어 있으면 Java 프로그램은 해당 리소스 파일을 쉽게 찾고 사용할 수 있습니다.
# IntelliJ IDEA에서 Classpath를 설정하기
IntelliJ IDEA에서 프로젝트를 열고, 상단 메뉴에서 [ Run ] > [ Edit Configurations ]를 클릭한다.
Run / Debug Configurations 팝업이 오픈되면 해당Application의 실행 구성 파일을 선택한다.
좌측의 Modify options 드롭 다운 메뉴 버튼을 클릭하여 추가 옵션창이 나타난다.
Shorten command lin 옵션을 찾아서 활성화 시켜주면 Run / Debug Configurations 창에
Shorten command lin 옵션이 추가된다.
Shorten command lin 드롭다운 메뉴에서 classpath file 혹은 JAR manifest중에 택일하여 준다.
※ JAR Manifest과 Classpath File중 Classpath File을 권장한다.
[Apply] 버튼을 클릭하여 변경 사항을 적용하고 [OK]버튼을 클릭하여 팝업창을 닫아준다.
JAR Manifest
- 이 옵션은 클래스패스에 포함된 JAR 파일 목록을 `MANIFEST.MF` 파일에 기록합니다. `MANIFEST.MF` 파일은 JAR 파일 안에 포함된 메타데이터 파일로, `Class-Path` 속성을 사용하여 필요한 JAR 파일들을 참조할 수 있습니다.
- Java 애플리케이션을 실행할 때, JAR 파일의 매니페스트에 정의된 클래스패스를 사용하여 필요한 라이브러리들을 로드합니다.
Classpath File
- 모든 클래스패스 정보가 텍스트 파일에 기록되므로, 클래스패스를 관리하고 수정하기가 더 간편합니다.
- 텍스트 파일이 별도로 존재하기 때문에 배포 시 JAR 파일 자체를 수정할 필요가 없습니다.
이후 IntelliJ IDEA의 우측 사이드 바에서 Gradle을 선택하고 [재빌드] 하여준다.
Build Output 팝업창에 BUILD SUCCESSFUL 메시지가
출력되면 프로젝트 빌드가 성공적으로 완료 되었다.
'Android > Setting' 카테고리의 다른 글
[Android] Git Clone 하기 (0) | 2023.07.05 |
---|---|
[Android] 기본 제공 ICON 사용방법(벡터 그래픽) (0) | 2022.07.19 |
[Android] 프로젝트에 신규 모듈 추가하여 관리하기 (0) | 2022.07.14 |
[Android] ViewBinding 사용하기 (0) | 2022.06.13 |
[Android] 프로젝트 만들기 (0) | 2021.10.26 |