2013-10-15 3 views
0

여기에 시나리오
이 있습니다. 클래스 B.java에 종속적 인 클래스 A.java가 있다고 가정 해 봅시다. 단지 클래스 A를 사용다른 클래스에 따라 클래스를 두 개의 다른 jar로 따로 따로 포장 할 수 있습니다

public Class A{ 
    public B b=new B(); 
} 
public Class B{ 
    //Some business logic... 
} 

그리고이 애플리케이션 X는 (어딘가 X 내부 new A()있다). 그래서
1) A.class를 포함하는 2 개의 jar 파일과 B.class를 포함하는 다른 jar 파일을 만들 수 있습니까? 응용 프로그램에서이 2 개의 jar 파일을 추가 할 수 있습니까?
2) A.class만을 포함하는 하나의 항아리를 만들 수 있습니까? 응용 프로그램에서 해당 항아리를 추가하고 런타임에 응용 프로그램에 B.class를 제공 할 수 있습니다 (런타임시 B.class를 주입 할 수 있음).
참고 : 단일 항아리에 이러한 2 개의 클래스를 추가 할 수 없습니다.

그래서 클래스 A는 응용 프로그램 X의 컴파일 시간 의존성이고 클래스 B는 런타임 종속성입니까?

포인트 1과 2에서 "응용 프로그램에서 jar 추가"라고 말하면 정확히 무엇을하고 있는지, 응용 프로그램 X의 buildpath 또는 클래스 경로에 해당 jar 파일을 추가합니까? 아마도 누군가가이 "경로"의 차이를 이해하는 데 도움이 될 수 있습니다. 나는 항상 혼란스러워합니다.

답변

0

기본적으로 프로젝트의 빌드 경로에서 먼저 컴파일해야하며 런타임에 클래스 경로에 클래스를 다시 제공해야합니다. 클래스를 함께 가져 와서 서로 다른 병에 넣은 다음 런타임에 classpath에서 재사용 할 수 있습니다.

+0

"프로젝트의 빌드 패스에서 먼저 컴파일해야합니다." – Monk789

+0

@ Monk789 빌드 경로는 컴파일 할 때 필요한 jar 집합입니다. 컴파일되고 컴파일되지 않은 클래스/인터페이스/enum을 제공하고 컴파일 된 jar 및 클래스 파일 집합을 가져옵니다. 이러한 컴파일 된 파일은 별도의 방법으로 실행되지만 런타임 클래스 페이지에있는 한 'A'와 'B'가 다른 항아리에 있더라도 응용 프로그램을 실행할 때 다시 재 작성해야합니다. – hexafraction