programing

클래스 경로란 무엇이며 어떻게 설정해야 합니까?

goodcopy 2022. 8. 16. 22:24
반응형

클래스 경로란 무엇이며 어떻게 설정해야 합니까?

난 방금 이 대사를 읽고 있었어.

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 파일을 클래스 경로에 저장함으로써 수행됩니다.

classpath 설정 방법에 대해 설명하기 전에 .class 파일, 패키지 및 .jar 파일에 대해 설명하겠습니다.

내 인 "MyClass"에 있다고 output은 .class 에 있습니다.output/org/javaguy/coolframework/MyClass.class 정보가 'output.Import 스테이트먼트에서 VM에 모든 정보를 제공하기 때문에 이 파일에 액세스하려면 경로에 패키지 구조 전체가 아닌 'output' 폴더가 포함되어 있어야 합니다.

Cool Framework . jar Cool Framework . jar 고를 lib 。 '마음껏'를 넣어야 합니다.lib/CoolFramework.jar당신의 수업 경로에.에서 VM jar를 합니다.org/javaguy/coolframework어지,,네네 네을아아라라

classpath에는 다음이 포함됩니다.

  • JAR 파일 및
  • 패키지 계층의 맨 위에 대한 경로입니다.

당신은 어떻게 수업 경로를 설정합니까?

모든 사람이 배우는 첫 번째 방법은 환경변수로 배우는 것이다.UNIX 머신에서는, 다음과 같이 말할 수 있습니다.

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

윈도우즈 시스템에서는 환경 설정으로 이동하여 이미 있는 값을 추가하거나 수정해야 합니다.

은 '어느 정도'를 예요.-cp다음과 같이 Java를 시작할 때 매개 변수를 지정합니다.

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

은, 「」, 「」, 「」, 「E-M-M-M-Manager」로 행해지는 세 입니다..sh ★★★★★★★★★★★★★★★★★」.bat를 경유하여 -cp파라미터를 지정합니다.

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

그럼 어떻게 하면 좋을까요?

일반적으로 글로벌 변수가 나쁜 것과 같은 이유로 환경 변수를 사용하여 글로벌하게 설정하는 것은 좋지 않습니다. 수 있어요.CLASSPATH환경변수로 인해 하나의 프로그램이 작동하게 되고 결국 다른 프로그램이 고장나게 됩니다.

-cp가는 길이에요.으로 제 것을 합니다.CLASSPATH환경변수는 가능한 한 글로벌 클래스 패스의 문제를 피하기 위해 개발해야 하는 빈 문자열입니다(글로벌 클래스 패스가 비어 있는 경우 일부 툴은 만족하지 않습니다.커맨드라인 툴에 이러한 문제가 있는 일반적인 수백만달러 라이센스 J2EE 및 Java 서버 2대를 알고 있습니다).

PATH 환경변수에 대한 Java의 답변이라고 생각하시면 됩니다.OS는 PATH에서 EXE를 검색하고 Java는 클래스 경로에서 클래스와 패키지를 검색합니다.

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

문맥에서는, 「」는format()는 이합니다.

classpath는 Java 세계의 기본 개념 중 하나이며 Java 프로그램, 특히 초보자들에 의해 오해되거나 전혀 이해되지 않는 경우가 많습니다.

간단히 말하면classpath...set of paths여기서 Java 컴파일러와 JVM은 다른 클래스를 컴파일 또는 실행하기 위해 필요한 클래스를 찾아야 합니다.

를 들어 Main.java" " " C:\Users\HP\Desktop\org\example ,

package org.example;

public class Main {
    public static void main(String[] args) {
    
            System.out.println("Hello world");
            
    }
}

이제 가 자, 제, 고, 고, 고, 고, 고, 고, 고, 고, 고, 고, 고, 고, and 밑에 있다고 가정해봅시다.C:\디렉토리 및 클래스를 컴파일하고 싶습니다.그냥 실행해 주세요.

javac .\Users\HP\Desktop\org\example\Main.java


문제는 폴더 요.C:\이치노

정답이라고 생각되는 것에도 불구하고 올바른 답은 다음과 같습니다.

java -cp .\Users\HP\Desktop org.example.Main 

우리가 이 왜 org.exmaple.Main메인, 또는 Main.class 또는 .\users\hp\desktop\org\example\Main.class아닙니다.패키지로 선언된 클래스는 이렇게 동작합니다.

이제 JVM에 클래스 이름을 제공했습니다(이 경우 java 명령). 그런데 (JVM)은 어떻게 메인 클래스의 .class 파일을 찾을 수 있습니까?여기서부터가classpath모습을 드러냅니다.사용.-cpflag(-classpath 단축키), Main.class 파일이 다음 위치에 있음을 JVM에 알립니다.C:\users\hp\Desktop..사실, 별로, 우리는 그것을 말해줍니다.just go to the Desktop directory, and, because of the name of the class org.example.Main, the JVM is smart and it will go from Desktop to org directory, and from org to example directory, searching for Main.class file그리고 그걸 찾아내서 죽일 거야, 그러니까 그걸 작동시킬 거야.

이제 메인 클래스 내에서 다음 이름을 가진 다른 클래스와의 작업을 수행한다고 가정해 보겠습니다.org.apache.commons.lang3.StringUtils그리고 후자는 이름이 붙은 항아리 파일에 있습니다.commons-lang3-3.10.jar안에 있다C:\Users\HP\DownloadsMain.java는 다음과 같이 표시됩니다.

package org.example;

import org.apache.commons.lang3.StringUtils;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world");
        System.out.println(StringUtils.equals("java", "java")); //true
    }   
}


Main.java를 컴파일하는 방법(항상 안에 있는 경우)C:\답은 다음과 같습니다.

javac -cp .\Users\HP\Downloads\commons-lang3-3.10.jar .\Users\HP\Desktop\org\example\Main.java
  • .\Users\HP\Desktop\org\example\Main.java파일 시스템에 .disc 파일이 있기 때문입니다.

  • -cp .\Users\HP\Downloads\commons-lang3-3.10.jar이는 Java 컴파일러(이 경우 httack)가 클래스 org.disc.disc.disc3의 위치를 알아야 하기 때문입니다.StringUtils, 그래서 우리는 jar 파일의 경로를 제공했습니다.그러면 컴파일러는 jar 파일 안으로 들어가 디렉토리 내에서 StringUtils.class 파일을 찾습니다.org\apache\commons\lang3.


Main.class 파일을 실행하는 경우 다음을 수행합니다.

java -cp ".\Users\HP\Desktop\;.\Users\HP\Downloads\commons-lang3-3.10.jar" org.example.Main
  • org.example.Main클래스 이름입니다.

  • ".\Users\HP\Desktop\;.\Users\HP\Downloads\commons-lang3-3.10.jar"는 Main 및 StringUtils 클래스에 대한 경로(Windows에서는 ;로 구분)입니다.

이 컨텍스트의 클래스 패스는 일반적인 컨텍스트와 동일합니다.VM이 알고 있는 모든 장소에서 로드할 클래스 및 리소스(예: output.vm)를 찾을 수 있습니다.

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

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

CLASSPATH 시스템 변수 설정

현재 CLASSPATH 변수를 표시하려면 Windows 및 UNIX(Bourne shell)에서 다음 명령을 사용합니다.Windows 의 경우:C:\> set CLASSPATHUNIX의 경우:% echo $CLASSPATH

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

CLASSPATH 변수를 설정하려면 다음 명령을 사용합니다(예:).Windows 의 경우:C:\> set CLASSPATH=C:\users\george\java\classesUNIX의 경우:% CLASSPATH=/home/george/java/classes; export CLASSPATH

CLASSPATH는 Java 컴파일러와 실행 시 Java 프로그램에서 사용되는 Java 패키지를 찾기 위해 필요한 환경 변수(모든 프로세스에서 사용 가능한 운영 체제의 글로벌 변수)입니다.(PARGE PATH에 문의해 주세요.)이는 CMD 쉘에서 실행 가능한 프로그램을 찾기 위해 사용하는 다른 환경 변수 PATH와 유사합니다.

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

클래스의 정적 멤버는 개체 인스턴스를 만들지 않고 직접 호출할 수 있습니다.주 메서드는 정적이기 때문에 Java 가상 머신은 프로그램의 시작 지점인 주 메서드를 포함하는 클래스의 인스턴스를 만들지 않고도 호출할 수 있습니다.

Linux 사용자의 경우, 그리고 다른 사용자의 의견을 요약하고 여기에 덧붙이려면 다음 사항을 알아야 합니다.

  1. $CLASSPATH는 Java가 여러 디렉토리를 검색하여 스크립트에 필요한 모든 다른 클래스를 찾기 위해 사용하는 것입니다(-cp 덮어쓰기로 명시적으로 지시하지 않는 한).-cp를 사용하려면 모든 디렉토리를 수동으로 추적하고 프로그램을 실행할 때마다 해당 행을 복사 붙여넣어야 합니다(IMO가 바람직하지 않습니다).

  2. 콜론(":") 문자는 다른 디렉토리를 구분합니다.$CLASSPATH는 1개뿐이며 모든 디렉토리가 포함되어 있습니다.따라서 "export CLASSPATH=...."를 실행할 때 추가할 현재 값 "$CLASSPATH"를 포함하려고 합니다.예를 들어 다음과 같습니다.

    export CLASSPATH=.
    export CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java-5.1.12.jar
    

    위의 첫 번째 줄에서는 CLASSPATH를 현재 작업 디렉토리에 대한 경로인 단순한 '닷'으로 시작합니다.따라서 Java를 실행할 때마다 현재 작업 디렉토리(당신이 속한 디렉토리)에서 클래스를 검색합니다.위의 두 번째 줄에서 $CLASSPATH는 이전에 입력한 값(.)을 가져와 mysql dirver에 경로를 추가합니다.이제 java가 클래스용 드라이버 AND를 찾습니다.

  3. echo $CLASSPATH
    

    는 매우 편리하며 반환되는 내용은 콜론으로 구분된 모든 디렉토리 목록과 .jar 파일처럼 읽혀질 것입니다.Java가 필요한 클래스를 검색해야 합니다.

  4. Tomcat은 CLASSPATH를 사용하지 않습니다. 이 작업에 대한 자세한 내용은 https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html를 참조하십시오.

언급URL : https://stackoverflow.com/questions/2396493/what-is-a-classpath-and-how-do-i-set-it

반응형