2014-06-18 2 views
0

많은 클라이언트가 사용하는 Java 제품이 있습니다. 이 제품은 고객의 요구 사항에 맞게 제품을 사용하고자하는 XYZ 회사의 코드베이스에 항아리로 추가되고 독립적으로 작동합니다. 그것의 독립 실행 형 제품과 모든 클라이언트 프로젝트는이 하나의 제품에 의존합니다. (이것은 다시 한 Java 프로젝트가 라이선스와 함께 번들로 묶인 번들입니다.)Java - 클래스 경로 외부에서 클래스를로드하십시오. 옵션은 무엇입니까

이제 상황을 만듭니다. 엔진은 클래스 경로 밖에서 클래스를 사용합니다. 그것은 클라이언트 클래스이고 제품 코드베이스로 그 클래스를 옮기고 그것을 외부에 두지 않고 여전히 사용하고 싶습니다.

그냥 테스트 한 결과 클래스가 예상대로 찾을 수 없다는 것을 확인했습니다. 내가 생각할 수있는 한 가지 옵션은 해당 특정 클래스를 jar 파일로 내 제품 클래스 패스에 추가하는 것입니다.

더 좋은 아이디어가 있습니까?

+0

클라이언트 클래스별로 특성을 내 보내야합니다. – Ved

답변

1

나는 당신이 세 가지 옵션 (편집 - 자세한 내용은) 생각 :

  1. 로드 파일 시스템에있는 파일에서 클래스 사용을 URLClassLoader :

    see this answer;

  2. 클래스 사용하여 반사를 만들 :

    당신은 여전히 ​​클래스가 클래스 경로에있을 필요하거나 파일 시스템 (옵션 1), see this를 통해로드해야합니다.

  3. 중간 경로 솔루션 : 독립 실행 형 제품에 인터페이스를 추가 한 다음 리플렉션을 통해 구현 클래스를 만들 수 있습니다. 프로덕션 환경에서는이 코드를 사용하지 않았습니다. 코드를 테스트 한 결과 제대로 작동합니다. see this question

+0

고마워 .. 내가 이것을 확인하고 다시 돌아와 – Shiv

+0

@ Shiv, 나는 몇 가지 세부 사항을 추가했다. – vault

관련 문제