2017-09-17 5 views
0

특히 Eclipse 버전 번호 (4.7.0)를 찾을 수 있도록 코드를 작성해야합니다. 파일 (.eclipseproduct 또는 about.mappings)에서 찾을 수없고 API 호출을해야합니다.Eclipse에서 특정 플러그인의 버전 번호를 찾으십시오.

그래서 어떤 Java 프로그램에 의해 플러그인 org.eclipse.platform의 버전 번호를 찾을 수 있을지 궁금합니다.

+0

.eclipseproduct에서 읽을 수없는 이유는 무엇입니까? Eclipse 내에서 플러그인으로 사용하고 있습니까, 아니면 실행중인 인스턴스에 연결하고 있습니까? –

+0

이 코드는 Eclipse 플러그인에 있습니까? 아니면 별도의 Java 프로그램입니까? –

+0

안녕 greg-449 플러그인이 아닌 별도의 Java 프로그램을 가정 해 보겠습니다. PerDigre .eclipseproduct에서 읽으면 이클립스 버전을 사용하면 가장 효과적인 솔루션이 될 수 없습니다. – Amit740

답변

0

Eclipse 내에서 런타임 워크 벤치라고 가정 할 때 가장 간단한 방법은 시스템 속성에서 가져 오는 것입니다.

System.getProperty("eclipse.buildId") 

Eclipse 컨텍스트 내에 있지 않은 경우 ".eclipseproduct"와 같은 설치 파일 또는 디버거를 통해 설치 파일이 있습니다.

+0

Sop (System.getProperty ("eclipse.buildId"))는 나를 위해 null을 반환합니다. – Amit740

+0

Eclipse 컨텍스트, 즉 런타임 워크 벤치에서 설정됩니다. 내게는 "4.7.0.I20170612-0950"이라고 읽습니다. –

+0

eclipe.ini 파일에 eclipse.buildId = 4.7.4.7.0.I20170612-0950이 있습니까? – Amit740

0

Platform::getBundle과 함께 주어진 기호 이름에 대한 번들 (OSGi 런타임에서 플러그인 표현)을 얻을 수 있습니다. 번들이 있으면 버전을 쿼리 할 수 ​​있습니다. 예를 들어 :

Bundle bundle = Platform.getBundle("org.eclipse.ui.ide"); 
System.out.println(bundle.getVersion()); 

getBundle는 주어진 상징적 인 이름을 가진 번들 설치된 모든 번들을 검색은 OSGi 런타임을 요청합니다.

+0

매니페스트 파일에서 해당 번들을 사용할 수있는 경우에만 플러그인에서 작동합니까? – Amit740

+0

아니요, 해당 번들을 런타임에 사용할 수 있으면 충분합니다. 예 : 그것은 플러그인의 일시적인 종속성 일 수 있습니다. –

+0

지금은 별도의 Java 프로그램을 실행 중이므로 플러그인의 일부가 아닙니다. 지금은 Platform.getBundle ("org.eclipse.platform")은 null을 반환합니다. 내가 입력하는 "org. *"번들과 동일합니다. – Amit740