2011-03-27 2 views

답변

3

예, META-INF/services을 jar 파일없이 사용할 수 있습니다. 적어도 그것은 나의 테스트 (Java 6)에 따라 일어나는 일이다.

모든 jar 파일과 클래스 경로에있는 모든 디렉토리의 META-INF 디렉토리는 독립적으로 스캔 할 수 있으므로 기술적으로 이러한 META-INF 파일이 다른 jar 파일에서 파일을 무시하지 않지만 항목을 (로더 메커니즘에 따라 다름) 파일 중 하나 (클래스 로더 중 하나의 리소스)에 다른 파일보다 우선 순위가 있으므로 실제로 항목을 오버로드 할 수 있습니다. 이미 알았 듯이 그 중 하나는 javax.xml.datatype.FactoryFinder입니다.

+1

고마워요, 부모 클래스 로더의 META-INF/services/javax.xml.transform을 무시하고 있습니다. TransformerFactory, 그 목적을 위해 분명히 그것의 부모 - 마지막 기본적으로, 그래서 그것은 현재 클래스 로더 META-INF 콘텐츠를 재정의하지 않는다는 것에 동의하지만 그것은 부모의 것을 오버 라이딩하는 것처럼 보입니다. javax.xml.datatype.FactoryFinder.findJarServiceProvider –

+0

참조 물론 당신은 당연한 것입니다 :-) 나는 내 대답을 업데이트하려고했습니다 ... 당신은 그 점을 알아야합니다. –

0

모든 클래스 로더 (적어도 모든 유 용한 클래스 로더)가 순서를 지정합니다. 물건은 한쪽 끝에서 다른 쪽 끝까지 검색됩니다. META-INF 디렉토리를 jar 또는 (비교) 프론트의 디렉토리에 추가하면 거기에있는 파일이 먼저 나옵니다. 마지막에 추가하면 마지막에 파일이 추가됩니다. 클래스 로더가 부모가 먼저 있고 부모가 있다면 물론 첫 번째 샷을 얻습니다.