2014-10-23 2 views
0

Java 프로젝트의 경우 BuildpathClasspath을 보았습니다. Eclipse입니다. 프로젝트의 buildpath에 포함 된 모든 jar가 클래스 패스에 자동으로 포함되어 있음을 확인했습니다.Java Project의 Classpath는 어떤 시나리오에서 Buildpath와 다를 것입니까?

왜 Eclipse가 그렇게하는지 이해할 수 있습니다. 내 코드에서 외부 클래스를 인스턴스화해야한다면 컴파일 할 코드에 대한 buildpath를 통해 해당 클래스가 필요하다. 그리고 런타임시에는 jvm에로드 된 동일한 클래스가 필요합니다.

그러면 클래스 경로에 buildpath에 포함 된 모든 클래스가 필요합니다. 나는 프로젝트의 클래스 패스가 빌드 패스와 다른 경우를 생각할 수는 없다.

위의 이해가 정확합니까? classpath가 buildpath에있는 것보다 더 많은 클래스를 가질 시나리오를 줄 수 있습니까?

+1

프로젝트의 라이브러리 A에 의존하고 내부적으로 라이브러리 C를 사용하는 내부적으로 라이브러리 B를 사용한다고 가정 해 봅시다. 앱을 빌드하려면 B와 C가 필요합니까? 아니. 달리기가 필요해? 예. A는 B와 B가 필요합니다. C가 필요합니다. –

답변

2

클래스가 런타임에만 필요하며 컴파일 시간이 필요없는 경우가 많이 있습니다. 가장 일반적인 것 중 하나가 JDBC 드라이버입니다. 코드는 JDBC API에 대해 작성/컴파일되지만 런타임시 드라이버 클래스가 클래스 경로에서 사용 가능해야합니다. 다른 많은 예가 있습니다. 특히 런타임에 "삽입"할 수있는 표준 API와 구현이 다른 다양한 프레임 워크를 사용하면 더욱 그렇습니다.

0

매우 일반적인 예는 Servlet API와 같은 일부 API를 구현하는 클래스입니다. 각 컨테이너 (Tomcat, Jetty, WebSphere)는 인터페이스를 사용하기 때문에 웹 애플리케이션이 일반적으로 아무것도 모르는 클래스를 제공합니다.

보다 광범위하게이 패턴은 인터페이스를 구현하는 플러그인을 런타임에 추가 할 수 있도록 서비스 공급자 인터페이스에 사용됩니다.