2010-08-20 2 views
71

나는이 두 용어와 혼동합니다.클래스 경로와 빌드 경로의 차이점

또한 스프링 MVC 프로젝트의 src 폴더 아래에 파일을 만들려면 어떻게해야합니까? File 객체를 사용하여 생성하면 C : \ SpringSourceTool 내부에 파일이 생성됩니다. 이것이 바로 ClassPath입니다.

applicationcontext 폴더 또는 응용 프로그램의 루트를 어떻게 얻을 수 있습니까?

답변

80

빌드 경로은 응용 프로그램을 작성하는 데 사용됩니다. 여기에는 모든 소스 파일과 응용 프로그램을 컴파일하는 데 필요한 모든 Java 라이브러리가 들어 있습니다.

클래스 경로은 응용 프로그램을 실행하는 데 사용됩니다. 여기에는 Java 응용 프로그램을 실행하는 데 필요한 모든 Java 클래스와 라이브러리가 포함됩니다. Classpath는 필수이며, 기본 경로는 .이며, 이는 Java 가상 시스템이 사용자 정의 경로를 찾을 수없는 경우에 사용됩니다. (CLASSPATH 환경 변수, jar 매니페스트의 -cp 플래그 또는 Class-Path: 속성)

+0

하지만 javac는 클래스 경로 인수를 취합니다. 이 매개 변수가 빌드 경로를 지정하기 위해 "오버로드 됨"이라고 말할 수 있습니까? – aioobe

+2

아니요. _classpath_ 인수는 런타임에 사용 가능/제공 될 것으로 예상되는 컴파일러에 대한 힌트입니다. 사용자가 직접 사용하는 모든 클래스 (예 : JFC, 라이브러리 등)를 빌드하지 않았기 때문에이 인수가 유용합니다. _buildpath_에는 소스 및/또는 소스/컴파일 된 종속성과 이들을 찾을 위치가 모두 들어 있습니다. –

+0

플러그인을 개발하는 동안 필요한 모든 라이브러리를 클래스 경로에 추가했지만 아무것도 가져올 수 없습니다. 내가 경로를 만들 때까지 이클립스는 그들을 보지 못했다. – Bax

3

각 Java 프로젝트에는 프로젝트를 컴파일하는 데 필요한 모든 종속성을 지정하는 자체 빌드 경로가 있습니다. 이러한 종속성은 작업 공간의 다른 Java 프로젝트, Java 아카이브 .jar 파일 또는 .class 파일이 들어있는 폴더에서 가져올 수 있습니다.

CLASSPATH 환경에서 .class 파일 (예 : jar, zip 파일 - 내부에는 jar, zip 파일 만 Java 클래스가 있음)을 지정해야합니다. 즉, JVM (Java Virtual Machine)이 Java 클래스 파일을 찾도록 도와줍니다.

또한 나는 스프링 MVC 프로젝트의 src 폴더에 파일 을 만들기 위해 무엇을해야합니까? 내가 객체 파일을 사용하여 만들 때 그것은 C 내부의 파일을 만듭니다 : \ SpringSourceTool ...

JVM이 시작 장소를 어디에서 다른 파일을 작성하려는 경우가있다가, 여기에서 상대 경로를 사용 .

자세한 내용은 thisthis을 참조하십시오.

+0

답변에 빌드 경로를 언급하지 않았습니다. – aioobe

+0

감사합니다. @aioobe, 나는 처음에 밖으로, 편집 지금 싶었어요. – pavanlimo

23

클래스 경로는 런타임에 컴파일 된 클래스 및 리소스를로드하는 데 사용됩니다.

빌드 경로는 프로젝트를 빌드하는 데 필요한 종속성을 찾기 위해 컴파일 타임에 사용됩니다.

+0

'.class' 파일 (및 다른 컴파일 된 리소스)을 찾는 데 클래스 경로가 사용되고 컴파일 경로가 컴파일해야하는 소스 파일을 찾는 데 사용된다고 할 수 있겠습니까? – Adam

+0

@ Adam 나는 완전히 진실이라고 생각하지 않는다. 빌드 경로에는 .class 파일이 필요할 때가 있습니다. 따라서 빌드 경로는 장면 뒤에서 클래스 경로를 사용합니다. java CLI를 사용하여 Java 프로젝트를 컴파일하고 실행하는 데 시간이 걸리면이를 볼 수 있습니다. javac와 java 명령은 둘 다 필요하기 때문에 classpath 옵션을 가지고 있습니다. –

38

클래스 경로는 Java 컴파일러와 Java 런타임에 컴파일 된 클래스를 찾는 일반적인 방법입니다. 일반적으로 JAR 파일 이름과 디렉토리 이름의 순서입니다. 컴파일러와 런타임 시스템에서 사용하는 클래스 패스는 이 동일하지 않아야하지만 일반적으로 작은 프로젝트 인 경우 "*이어야합니다."

Buildpath는 표준 Java 용어가 아닙니다. 전형적인 IDE가 애플리케이션을 구성하는 "모듈"또는 "프로젝트"간의 관계를보다 풍부하게 표현하기 위해 IDE는 이것을 사용하여 Java 코드를 컴파일하기위한 classpath와 sourcepath와이를 실행하기위한 classpath를 알아 낸다. 또한 IDE는 빌드 경로를 사용하여 코드 및 해당 종속성을 WAR 파일과 같이 패키지하는 방법을 파악합니다.

예를 들어, 프로젝트의 Eclipse 빌드 경로에는 의존하는 다른 프로젝트가 포함되며 프로젝트가 포함/의존하는 추가 라이브러리 JAR이 나열됩니다. 또한 다운 스트림 프로젝트가 의존 할 수있는 현재 프로젝트의 패키지를 나열합니다.

(당신이 당신의 프로젝트에 메이븐을 사용하는 경우, IDE의 buildpath 메커니즘이 POM 파일에 선언 된 종속성 차입니다. 예를 들어, m2eclipse에 이클립스를 사용하여 buildpath이 POM 파일에서 합성된다.)

관련 문제