Eclipse : 플러그인의 JAR이 다른 곳에서 다른 버전보다 우선 순위가 부여되는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/460872

문제

Lucene의 특정 버전이 포함 된 Eclipse 플러그인을 개발하고 있습니다. 검색 색인을 생성하고 동일한 버전의 Lucene을 사용하는 다른 응용 프로그램에서 읽을 수 있도록 배포해야합니다.

최근에 Eclipse를 3.4로 업그레이드했으며 이제 두 번째 응용 프로그램에서 검색 인덱스를 읽을 수 없습니다. Eclipse 3.4에는 최신 버전의 Lucene이 포함되어 있으며 인덱스를 생성 할 때이 버전이 사용된다고 가정합니다.

인덱스가 생성 될 때 어떤 버전의 루센이 사용되는지 정확히 결정하려면 어떻게해야합니까? 내 플러그인 클래스 경로는 Bundled 버전의 Lucene으로 시작하여 내 버전이 우선 순위가 높아질 것으로 예상했을 것입니다.

티아

도움이 되었습니까?

해결책 2

지금 작동하는 것 같습니다. 관심있는 분들을 위해 이것이 제가해야 할 일입니다.

  • 내 플러그인에서 Lucene 1.4.3 항아리를 제거했습니다
  • 이전 버전의 Eclipse에서 이전 Lucene 플러그인을 버전 3.4로 복사했습니다.
  • Plugin.xml 마법사의 모든 종속성을 삭제했습니다. 이제 모든 Lucene 플러그인이 보입니다.
  • 선택된 버전 1.4.xx 및 최대 1.5의 최대 버전을 설정하도록 속성을 변경했습니다.
  • 다른 플러그인 종속성을 추가했습니다
  • 빌드 경로 변경 : 오래된 항아리 제거, 추가 플러그인 의존성 Lucene 1.4.3
  • 재 계산 된 실행 구성. Lucene 1.4.3 플러그인은 자동으로 추가되지 않았으므로 손으로 추가했습니다.
  • 이제 인덱스가 생성되면 버전 1.4.3이로드됩니다.

이것이 누군가에게 유용하기를 바랍니다.

다른 팁

당신은주고 싶을 수도 있습니다 ClassPath 검사기 그리고 ClassPath 도우미 시도.

Luce가 인덱스를 생성하는 배치 환경에있는 항아리와 비교하기 위해 개발 환경에서 어떤 JAR이 사용되는지 정확하게 확인할 수 있습니다.

Claspath Checker Jar 충돌 :
classpath checker

ClassPath 도우미 차단 (가려진) 클래스보기 :
classpath helper

Eclipse 플러그인을 개발하므로 OSGI를 살펴 봐야합니다. Eclipse 플러그인은 Osgi 번들의 인스턴스이며 Osgi는 종속성을 처리하고 번들 간의 버전을 처리하기위한 강력한 모델을 가지고 있습니다.

귀하의 특정 코드를 모르지만 플러그인에서 Lucene을 사용할 계획이라면 Osgi의 '가져 오기 패키지'또는 '요구 사항'기능을 사용하여 종속성을 표현합니다. 플러그인에 Lucene Jar를 포함시키지 않을 것입니다. 모든 플러그인에 자체 Lucene Jar가 포함되어 있다면 공간을 낭비하지만 더 중요한 것은 호환되지 않는 버전으로 끝납니다.

Osgi의 웹 사이트 OSGI 여행을 시작하기에 가장 좋은 곳은 아닙니다 (OSGI 사양과 Peter Kriens의 블로그에 좋습니다). Neil Bartlett 's Online과 같은 것으로 시작하는 것이 좋습니다. .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top