logo

Java에서 CLASSPATH를 설정하는 방법

수업 경로: CLASSPATH는 .class 파일을 찾고 로드하기 위해 Application ClassLoader에서 사용하는 환경 변수입니다. CLASSPATH는 확장이 아니거나 Java 플랫폼의 일부가 아닌 타사 및 사용자 정의 클래스를 찾기 위한 경로를 정의합니다. CLASSPATH를 설정할 때 .class 파일과 JAR 파일이 포함된 모든 디렉터리를 포함합니다.

다음과 같은 경우 CLASSPATH를 설정해야 합니다.

이진 트리 유형
  • 현재 디렉터리나 하위 디렉터리에 없는 클래스를 로드해야 합니다.
  • 확장 메커니즘에 의해 지정된 위치에 없는 클래스를 로드해야 합니다.

CLASSPATH는 CLASSPATH를 설정하는 대상에 따라 다릅니다. CLASSPATH에는 끝에 디렉터리 이름이나 파일 이름이 있습니다. 다음 사항은 CLASSPATH의 끝이 무엇인지 설명합니다.

  • JAR 또는 zip 파일인 경우 파일에 클래스 파일이 포함되어 있으며 CLASSPATH는 zip 또는 JAR 파일 이름으로 끝납니다.
  • 클래스 파일이 명명되지 않은 패키지에 배치된 경우 CLASSPATH는 클래스 파일이 포함된 디렉터리로 끝납니다.
  • 클래스 파일이 명명된 패키지에 배치된 경우 CLASSPATH는 전체 패키지 이름의 루트 패키지, 즉 전체 패키지 이름의 첫 번째 패키지가 포함된 디렉터리로 끝납니다.

CLASSPATH의 기본값은 점(.)입니다. 검색된 유일한 현재 디렉터리를 의미합니다. CLASSPATH 변수를 설정하거나 -classpath 명령(줄여서 -cp)을 사용하면 CLASSPATH의 기본값이 재정의됩니다. 검색 경로에 현재 디렉터리를 포함하려면 새 설정에 점(.)을 입력하세요.

CLASSPATH가 현재 디렉토리에 있는 클래스 파일을 찾으면 CLASSPATH에도 포함된 다른 디렉토리에 동일한 이름의 클래스가 있는지에 관계없이 클래스를 로드하고 사용합니다.

여러 클래스 경로를 설정하려면 각 CLASSPATH를 세미콜론(;)으로 구분해야 합니다.

JVM을 사용하는 타사 애플리케이션(MySQL 및 Oracle)은 사용하는 라이브러리를 포함하도록 CLASSPATH 환경 변수를 수정할 수 있습니다. 클래스는 디렉토리나 아카이브 파일에 저장될 수 있습니다. Java 플랫폼의 클래스는 rt.jar에 저장됩니다.

CLASSPATH를 설정하는 방법에는 명령 프롬프트를 통하거나 환경 변수를 설정하는 두 가지 방법이 있습니다.

MySQL 데이터베이스의 CLASSPATH를 설정하는 방법을 살펴보겠습니다.

1 단계: Windows 버튼을 클릭하고 제어판을 선택합니다. 시스템을 선택합니다.

Java에서 CLASSPATH를 설정하는 방법

2 단계: 클릭 고급 시스템 설정 .

자바 테일
Java에서 CLASSPATH를 설정하는 방법

3단계: 대화 상자가 열립니다. 환경 변수를 클릭하세요.

Java에서 CLASSPATH를 설정하는 방법

4단계: CLASSPATH가 시스템 변수에 이미 존재하는 경우 편집 버튼을 클릭한 다음 끝에 세미콜론(;)을 입력합니다. MySQL-Connector Java.jar 파일의 경로를 붙여넣습니다.

CLASSPATH가 시스템 변수에 없으면 새로 만들기 버튼을 클릭하고 변수 이름을 CLASSPATH로 입력하고 변수 값을 다음과 같이 입력합니다. C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;

기억하세요: ;.; CLASSPATH 끝에.

Java에서 CLASSPATH를 설정하는 방법

PATH와 CLASSPATH의 차이점

클래스패스
PATH는 환경 변수입니다. CLASSPATH도 환경 변수입니다.
운영 체제에서 실행 파일(.exe)을 찾는 데 사용됩니다. 이는 .class 파일을 찾기 위해 Application ClassLoader에서 사용됩니다.
.exe 파일이 포함된 디렉터리를 포함해야 합니다. .class 및 JAR 파일이 포함된 모든 디렉터리를 포함해야 합니다.
PATH 환경 변수는 한 번 설정되면 재정의할 수 없습니다. CLASSPATH 환경 변수는 javac 및 java 명령 모두에 -cp 또는 -CLASSPATH 명령줄 옵션을 사용하여 재정의할 수 있습니다.

명령 프롬프트를 사용하여 Windows에서 CLASSPATH를 설정하는 방법

명령 프롬프트에 다음 명령을 입력하고 Enter 키를 누릅니다.

 set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8
t.jar; 

위 명령에서 set은 사용자가 변수 값을 변경할 수 있는 내부 DOS 명령입니다. CLASSPATH는 변수 이름입니다. 백분율 기호(%)로 묶인 변수는 기존 환경 변수입니다. 세미콜론은 구분 기호이며, (;) 뒤에는 rt.jar 파일의 PATH가 있습니다.

C++ 쌍

Java에서 ext 폴더가 작동하는 방식

ext 디렉토리는 CLASSPATH와 약간 유사하게 작동합니다. ext 디렉토리는 클래스 로딩 메커니즘의 일부입니다. ext 디렉토리의 JAR 내에서 사용 가능한 클래스는 Java 애플리케이션에서 사용할 수 있습니다.

다음 표에서는 CLASSPATH와 확장 메커니즘 간의 주요 차이점을 보여줍니다.

형질 클래스패스 확장 메커니즘
클래스 로딩 순서 CLASSPATH는 부트스트랩 및 확장 로드 후에 로드됩니다. ext는 부트스트랩 로딩 후 CLASSPATH 로딩 전에 로드됩니다.
범위 특정 응용 프로그램입니다. 호스트의 모든 JRE는 CLASSPATH 환경 변수입니다. 모든 JVM은 특정 JRE java.ext.dirs에서 실행됩니다.
패키지 이름 java.class.path는 클래스 파일이 포함된 디렉토리와 JAR 아카이브를 찾는 데 사용됩니다. java.ext.dirs는 확장 메커니즘이 클래스를 로드하는 위치를 지정하는 데 사용됩니다.
사양 이는 .class 파일이 포함된 디렉토리와 확장명.jar을 포함하는 이름으로 지정됩니다. 지정된 디렉터리의 모든 JAR 파일이 로드됩니다.

메커니즘은 파일에 .jar 확장자가 없더라도 확장 디렉토리에서 모든 .jar 파일을 선택합니다. 이를 구현하면 클래스 경로 디렉토리에 있는 jar의 이름을 .jar 이외의 확장자를 갖도록 변경할 수 있습니다. 와일드카드(*)는 선택하지 않습니다. 이 기술은 확장 디렉터리에서는 작동하지 않습니다.

예제를 통해 실행과정을 이해해보자.

A.java

 public class A { public String toString() { return 'hello'; } } 

B.java

 public class B { public static void main(final String[] args) { System.out.println(new A()); } } 

A.java 파일을 컴파일합니다. 컴파일된 A.class 파일을 A.jar에 보관합니다. 이 JAR 파일을 컴파일된 B.class 파일이 아닌 다른 디렉토리에 배치하십시오.

클래스 경로의 사용을 보여주기 위해 A.jar 파일을 C:JavaPrograms 디렉토리에 배치하고 B가 사용할 와일드카드(*)를 통해 해당 JAR에 액세스합니다.

버블 정렬

우리는 현재 디렉터리에서 A.class를 삭제했지만 B는 여전히 A.class를 로드할 수 있다는 것을 발견했습니다. Java 실행 프로그램은 명시적으로 C:JavaProgram을 찾았습니다. 동일한 디렉토리 및 명시적인 클래스 경로 지정 없이 클래스를 로드하는 것도 가능합니다.

해당 JRE를 사용하는 모든 애플리케이션은 클래스 경로에 명시적으로 지정할 필요 없이 동일한 클래스를 볼 수 있기 때문에 확장 메커니즘 사용의 이점으로 종종 언급됩니다.

동일한 CLASSPATH 참조 디렉토리에서 A.jar의 이름을 A.backup으로 변경하면 어떻게 되나요? CLASSPATH 참조에 .jar 확장자가 없기 때문에 동일한 작업을 수행하면 NoClassDefFoundError가 발생합니다.