클래스 패스 란 무엇이며 어떻게 설정합니까? 번째 일은

나는이 줄을 읽고 있었다.

format () 메소드가하는 첫 번째 일은 output.vm이라는 클래스 경로에서 Velocity 템플릿을로드하는 것입니다.

이 맥락에서 classpath의 의미와 classpath를 설정하는 방법을 설명하십시오.



답변

Java로 프로그래밍 할 때 소스 파일의 맨 위에 다음과 같은 것을 넣어서 작성중인 클래스에서 다른 클래스를 사용할 수있게합니다.

import org.javaguy.coolframework.MyClass;

또는 때로는 다음과 같이 말하여 가져 오기를 ‘대량 가져 오기’합니다.

import org.javaguy.coolframework.*;

따라서 프로그램에서 나중에 말할 때 :

MyClass mine = new MyClass();

Java Virtual Machine은 컴파일 된 클래스를 찾을 위치를 알고 있습니다.

VM이 컴퓨터의 모든 폴더를 살펴 보도록하는 것은 실용적이지 않으므로 VM에 찾을 장소 목록을 제공해야합니다. 이것은 클래스 경로에 폴더 및 jar 파일을 넣어 수행됩니다.

클래스 경로 설정 방법에 대해 설명하기 전에 .class 파일, 패키지 및 .jar 파일에 대해 이야기 해 봅시다.

먼저 MyClass가 프로젝트의 일부로 빌드 한 것으로 가정하고 프로젝트의 디렉토리에 있습니다 output. .class 파일은 output/org/javaguy/coolframework/MyClass.class해당 패키지의 다른 모든 파일과 함께 있습니다. 해당 파일에 접근하려면 import 문은 모든 정보를 VM에 제공하기 때문에 전체 패키지 구조가 아니라 ‘output’폴더를 포함해야합니다.

이제 CoolFramework를 .jar 파일로 묶고 해당 CoolFramework.jar를 프로젝트의 lib 디렉토리에 넣었다고 가정 해 봅시다. 이제 lib/CoolFramework.jar클래스 경로 에 넣어야 합니다. VM은 jar 파일 내부에서 해당 org/javaguy/coolframework부분을 ​​찾고 클래스를 찾습니다.

따라서 클래스 경로에는 다음이 포함됩니다.

  • JAR 파일
  • 패키지 계층의 최상위 경로.

클래스 패스를 어떻게 설정합니까?

모두가 배우는 첫 번째 방법은 환경 변수를 사용하는 것입니다. 유닉스 머신에서는 다음과 같이 말할 수 있습니다.

export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/

Windows 시스템에서는 환경 설정으로 이동하여 이미 존재하는 값을 추가하거나 수정해야합니다.

두 번째 방법은 -cp다음과 같이 Java를 시작할 때 매개 변수 를 사용하는 것입니다.

java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/"  MyMainClass

이것의 변형은 클래스 경로를 계산하고 매개 변수 를 통해 Java로 전달 하는 .sh또는 .bat파일로 종종 수행되는 세 번째 방법입니다 -cp.

위의 모든 “gotcha”가 있습니다. 대부분의 시스템 (Linux, Mac OS, UNIX 등)에서 콜론 문자 ( ‘:’)는 클래스 경로 구분 기호입니다. windowsm에서 구분 기호는 세미콜론 ( ‘;’)입니다.

가장 좋은 방법은 무엇입니까?

환경 변수를 통해 전역으로 물건을 설정하는 것은 일반적으로 전역 변수가 나쁜 것과 같은 이유로 나쁜 것입니다. 한 프로그램이 작동하도록 CLASSPATH 환경 변수를 변경하면 다른 프로그램이 중단됩니다.

-cp가가는 길입니다. 나는 일반적으로 CLASSPATH 환경 변수가 가능한 한 항상 개발되는 빈 문자열인지 확인하여 전역 클래스 경로 문제를 피합니다 (글로벌 클래스 경로가 비어있을 때 일부 도구는 행복하지 않습니다. 명령 줄 도구와 관련하여 이러한 종류의 문제가있는 달러 라이센스 J2EE 및 Java 서버).


답변

PATH 환경 변수에 대한 Java의 대답으로 생각하십시오. OS는 PATH에서 EXE를 검색하고 Java는 클래스 경로에서 클래스 및 패키지를 검색합니다.


답변

클래스 경로는 Java Virtual Machine이 Java 프로그램에서 사용자 정의 클래스, 패키지 및 리소스를 찾는 경로입니다.

이 컨텍스트에서 format()메소드는이 경로에서 템플리트 파일을로드합니다.


답변

이 컨텍스트의 클래스 경로는 일반 컨텍스트와 정확히 일치합니다. VM이로드 할 클래스를 찾을 수있는 모든 위치와 리소스 (예 : output.vm)가 있습니다.

Velocity는 “no package”에서 output.vm이라는 파일을 찾을 것으로 예상합니다. 이것은 JAR, 일반 폴더 일 수 있습니다. … 응용 프로그램의 클래스 경로에있는 모든 위치의 루트입니다.


답변

CLASSPATH 시스템 변수 설정

현재 CLASSPATH 변수를 표시하려면 Windows 및 UNIX (Bourne 쉘)에서 다음 명령을 사용하십시오. Windows : C:\> set CLASSPATH
UNIX : % echo $CLASSPATH

CLASSPATH 변수의 현재 내용을 삭제하려면 다음 명령을 사용하십시오. Windows : C:\> set CLASSPATH=
UNIX : % unset CLASSPATH; export CLASSPATH

CLASSPATH 변수를 설정하려면 다음 명령을 사용하십시오 (예 🙂 Windows : C:\> set CLASSPATH=C:\users\george\java\classes
UNIX : % CLASSPATH=/home/george/java/classes; export CLASSPATH


답변

클래스 경로는 시스템의 환경 변수입니다. 이 변수의 설정은 모든 패키지 계층의 루트를 Java 컴파일러에 제공하는 데 사용됩니다.


답변

CLASSPATH는 Java 컴파일러 및 런타임에서 Java 프로그램에 사용 된 Java 패키지를 찾는 데 필요한 환경 변수 (즉, 모든 프로세스에서 사용 가능한 운영 체제의 전역 변수)입니다. (PACKAGEPATH를 호출하지 않는 이유는 무엇입니까?) 이것은 다른 환경 변수 PATH와 유사합니다.이 변수는 CMD 쉘에서 실행 프로그램을 찾기 위해 사용합니다.

CLASSPATH는 다음 방법 중 하나로 설정 될 수 있습니다.

CLASSPATH can be set permanently in the environment: In Windows, choose control panel  System  Advanced  Environment Variables  choose "System Variables" (for all the users) or "User Variables" (only the currently login user)  choose "Edit" (if CLASSPATH already exists) or "New"  Enter "CLASSPATH" as the variable name  Enter the required directories and JAR files (separated by semicolons) as the value (e.g., ".;c:\javaproject\classes;d:\tomcat\lib\servlet-api.jar"). Take note that you need to include the current working directory (denoted by '.') in the CLASSPATH.

To check the current setting of the CLASSPATH, issue the following command:

> SET CLASSPATH

CLASSPATH can be set temporarily for that particular CMD shell session by issuing the following command:

> SET CLASSPATH=.;c:\javaproject\classes;d:\tomcat\lib\servlet-api.jar

Instead of using the CLASSPATH environment variable, you can also use the command-line option -classpath or -cp of the javac and java commands, for example,

> java classpath c:\javaproject\classes com.abc.project1.subproject2.MyClass3