2014-09-24 5 views
0

Pax 시험에서 OSGI 응용 프로그램을 테스트하고 싶지만 내 플러그인 중 하나에서 응용 프로그램을 시작하는 데 문제가 있습니다.Pax Exam에서 시작 인수가있는 Equinox 응용 프로그램을 시작하는 방법?

나는 Equinox를 사용하며 org.eclipse.equinox.app.IApplication을 확장하는 춘분 특정 클래스가 있습니다. 이 클래스는 이클립스 Application Launcher에서 선택할 수 있으며 실행되는 첫 번째 클래스입니다 (제 경우에는 앱 라이프 사이클을 제어합니다).

Pax 시험 테스트를 실행할 때 모든 번들은 해결되지만 내 IApplication은 시작되지 않습니다.

Pax 시험에서 어떻게 이런 종류의 응용 프로그램을 실행할 수 있습니까?

또한 앱 인수를 어떻게 전달할 수 있습니까? 일부 frameworkProperty (-F) 및 systemProperty (-D) 만 표시되지만 일부 일반 앱 인수가 필요합니다.

답변

0

내가 알 수있는 한 IApplication은 춘분의 일부가 아니라 일식 plattform의 일부입니다. 그래서 나는 pax 시험에서 직접적으로 지원되지 않는다고 생각합니다. Pax 시험은 OSGi 프레임 워크를 시작하고 지정한 번들을로드하고 시작합니다.

그래서이 작업을 수행하는 방법은 응용 프로그램 시작을 처리하는 Eclipse 번들을로드하는 것일 수 있습니다. 이것이 어떻게 작동하는지는 확실치 않습니다.

이클립스 특정 항목을 사용하면 응용 프로그램의 이식성이 떨어집니다. 그렇다면 순수한 OSGi 인프라 스트럭처로 똑같은 것을 달성 할 수 있을까요?

또는 이클립스 RCP 응용 프로그램을 테스트 할 응용 프로그램입니까? 이 경우 pax 시험은 아마도 최상의 시험 시설이 아닙니다. 이 경우 일부 UI 테스트 프레임 워크가 더 잘 일치합니다. (예 : https://developers.google.com/java-dev-tools/wintester/html/)

+0

일반 RCP가 아닌 앱입니다. – wajs

+0

그래서 IApplication을 사용하여 무엇을 달성하려고합니까? 아마도 대체품을 제안 할 수 있습니다. –

+0

그것은 일종의 요구 사항입니다. 그 이유는 모든 훌륭한 Eclipse Launcher와 그 주변을 생성해야한다고 생각합니다. – wajs

0

IApplication은 Equinox의 일부이며 레지스트리를 사용하여 설치된 항목을 찾습니다. 따라서 PAX에 적절한 jar를 포함하는 것 외에도 적어도 선언적 서비스와 확장 레지스트리 번들을 시작해야합니다. 그렇지 않으면 IApplication 항목을 찾을 수 없기 때문입니다.

둘째, EclipseStarter 클래스를 호출하는 번들이 없습니다.이 클래스는 주 인수를 처리하고이를 런타임에 전달합니다. 따라서 직접하지 않으면 응용 프로그램이 전혀 실행되지 않습니다.

특별히 자바 시스템 속성으로 다음을 지정하는 몇 가지 이클립스 특정 인수를 찾을 수 이클립스를 시작하는 경우 :

http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html

예를 들어, 당신은 -Dapplication.id = yourapp

를 지정할 수 있습니다

eclipse.commands를 개행 문자로 구분 된 인수 목록으로 사용해보십시오.

+0

그래서이 EclipseStarter를 사용하여 내 앱을 직접 실행할 수 있습니까? – wajs

+0

코드에서 코드를 주 방법으로 호출 할 수 있습니다. http://stackoverflow.com/questions/4673406/programatically-start-osgi-equinox 및/또는 내 Eclipse 책을 참조하십시오. – AlBlue

+0

pax-exam 외부에서 다른 osgi 컨테이너를 여는 것이 아닙니까? 왜냐하면 새로운 bundleContext를 반환한다는 것을 알 수 있습니다. – wajs