이 두 용어와 혼동됩니다.
또한 Spring MVC 프로젝트의 src 폴더 아래에 파일을 생성하려면 어떻게해야합니까? File 개체를 사용하여 만들면 C : \ SpringSourceTool 안에 파일이 생성됩니다. 이것이 ClassPath 맞습니까?
applicationcontext
응용 프로그램 의 폴더 또는 루트를 어떻게 얻을 수 있습니까?
이 두 용어와 혼동됩니다.
또한 Spring MVC 프로젝트의 src 폴더 아래에 파일을 생성하려면 어떻게해야합니까? File 개체를 사용하여 만들면 C : \ SpringSourceTool 안에 파일이 생성됩니다. 이것이 ClassPath 맞습니까?
applicationcontext
응용 프로그램 의 폴더 또는 루트를 어떻게 얻을 수 있습니까?
답변:
빌드 경로는 응용 프로그램을 구축하는 데 사용됩니다. 여기에는 애플리케이션을 컴파일하는 데 필요한 모든 소스 파일과 모든 Java 라이브러리가 포함됩니다.
클래스 경로는 애플리케이션을 실행하기 위해 사용된다. 여기에는 Java 애플리케이션을 실행하는 데 필요한 모든 Java 클래스 및 라이브러리가 포함됩니다. 클래스 경로는 필수이며 .
Java 가상 머신이 사용자 정의 경로를 찾을 수없는 경우 사용되는 기본 경로입니다 . ( jar 매니페스트의 CLASSPATH
환경 변수, -cp
플래그 또는 Class-Path:
속성)
클래스 경로는 (표준) Java 컴파일러 및 Java 런타임에 컴파일 된 클래스를 찾을 위치를 알려주는 일반적인 방법입니다. 일반적으로 일련의 JAR 파일 이름 및 디렉토리 이름입니다. 컴파일러와 런타임 시스템에서 사용하는 클래스 경로 는 동일 할 필요 는 없지만 , 특히 소규모 프로젝트의 경우 일반적으로 이어야합니다 .
Buildpath는 표준 Java 용어가 아닙니다. 일반적인 IDE가 응용 프로그램을 구성하는 "프로젝트"간의 관계를 지정하는보다 풍부한 방법을 가리키는 용어입니다. IDE는이를 사용하여 Java 코드를 컴파일하기위한 클래스 경로 및 소스 경로와이를 실행하기위한 클래스 경로를 파악합니다. IDE는 또한 빌드 경로를 사용하여 코드 및 해당 종속성을 WAR 파일로 패키징하는 방법을 파악합니다.
예를 들어 프로젝트의 Eclipse 빌드 경로에는 종속 된 다른 프로젝트가 포함되고 프로젝트가 포함하거나 의존하는 추가 라이브러리 JAR이 나열됩니다. 또한 다운 스트림 프로젝트가 의존 할 수있는 현재 프로젝트의 패키지를 나열합니다.
(프로젝트에 Maven을 사용하는 경우 IDE 빌드 경로 메커니즘은 POM 파일에 선언 된 종속성에 대한 보조입니다. 예를 들어 Eclipse를 m2eclipse와 함께 사용하면 빌드 경로가 POM 파일에서 합성됩니다.)
클래스 경로는 런타임에 컴파일 된 클래스 및 리소스를로드하는 데 사용됩니다.
빌드 경로는 컴파일 타임에 프로젝트를 빌드하는 데 필요한 종속성을 찾는 데 사용됩니다.
.class
파일 (및 기타 컴파일 된 리소스)을 찾는 데 사용되고 빌드 경로는 컴파일해야하는 소스 파일을 찾는 데 사용 된다고 말할 수 있습니까?
각 Java 프로젝트에는 프로젝트를 컴파일하는 데 필요한 모든 종속성을 지정하는 자체 빌드 경로가 있습니다. 이러한 종속성은 작업 공간의 다른 Java 프로젝트, Java 아카이브 .jar 파일 또는 .class 파일이 포함 된 폴더에서 올 수 있습니다.
CLASSPATH 환경에서는 .class 파일 만 지정해야합니다 (예 : jar, zip 파일 – jar, zip 파일에는 Java 클래스 만 있음). 즉, JVM (Java Virtual Machine)이 Java 클래스 파일을 찾는 데 도움이됩니다.
또한 Spring MVC 프로젝트의 src 폴더 아래에 파일을 생성하려면 어떻게해야합니까? File 객체를 사용하여 만들면 C : \ SpringSourceTool ... 안에 파일이 생성됩니다.
여기에서 JVM이 시작된 곳이며, 다른 곳에서 파일을 만들려면 여기에서 상대 경로를 사용하십시오.
Andreas_D의 답변에 추가 하여 IDE / 컴파일러가 코드에서 사용하는 외부 패키지 및 클래스를 찾는 데 필요한 빌드 경로 를 설명하고 싶습니다 . 이를 '종속성' 이라고도 합니다.
NB : 이러한 외부 패키지는 압축 된 .jar 파일 안에 패키징되거나 실제로 '라이브러리' 안에 패키징 된 여러 jar 파일이있을 수 있습니다 . 라이브러리 또는 라이브러리 그룹은 종종 '프레임 워크'를 구성 합니다.
코드에 다른 사람이 작성한 코드가 필요한 경우 명령을 사용하여 클래스로 가져올 수 있습니다 import
. 그러나 컴파일러 또는 IDE가 해당 클래스의 위치를 알아야하기 때문에이 명령 자체로는 충분하지 않습니다. 빌드 경로 에 지정 합니다 .
classpath
다른 한편으로는 코드의 실제 실행 중에 종속성을 찾을 수있는 응용 프로그램을 실행하는 JVM을 알려줍니다.
또한 참고 : Classpath는 JVM에서 사용하기위한 것입니다.
Buildpath는 IDE / 컴파일러에서 사용하며 개발 환경에서 클래스 경로를 구성하는 수단입니다. IDE를 통해 빌드 경로를 구성 할 때 .classpath라는 프로젝트에 숨겨진 파일도 구성하게됩니다. 배포시 JVM에 클래스 경로를 제공하는 데 사용됩니다.
클래스 경로 ( 위키 백과에서 ) :
전형적인 동적 로딩 동작과 유사하게, 자바 프로그램을 실행할 때, 자바 가상 머신은 느리게 클래스를 찾고로드합니다 (클래스가 처음 사용될 때만 클래스의 바이트 코드를로드합니다). 클래스 경로는 이러한 클래스를 정의하는 파일에 대해 파일 시스템에서 찾을 위치를 Java에 알려줍니다.
가상 머신은 다음 순서로 클래스를 검색하고로드합니다.
부트 스트랩 클래스 : Java 플랫폼의 기본 클래스 (Java 클래스 라이브러리의 공용 클래스 및이 라이브러리가 작동하는 데 필요한 개인 클래스로 구성됨).
확장 클래스 : JRE 또는 JDK의 확장 디렉토리에있는 패키지,
jre / lib / ext / 사용자 정의 패키지 및 라이브러리
기본적으로 JDK 표준 API 및 확장 패키지의 패키지 만 찾을 위치를 설정하지 않고도 액세스 할 수 있습니다. 모든 사용자 정의 패키지 및 라이브러리의 경로는 명령 줄 (또는 클래스가 포함 된 Jar 파일과 연결된 Manifest)에서 설정해야합니다.
간단히 말해, 프로그램이 실행되는 동안 JVM은 필요한 경우에만 클래스를로드합니다. 클래스가 필요할 때 JVM은 클래스 경로에 따라 바이트 코드를로드 할 위치 (예 : .class
파일)를 알 수 있습니다.
반면에 빌드 경로 는 일반적으로 Eclipse와 같은 IDE에서 프로젝트의 소스 코드를 컴파일하는 데 필요한 추가 라이브러리를 찾을 위치를 파악하는 데 사용됩니다. 빌드 경로는 런타임 중에 사용되지 않습니다.