2012-12-10 8 views
4

Eclipse를 사용하여 새 플러그인 프로젝트를 만들었습니다.이 플러그인을 사용하면 기본값 Activator이 생성되었습니다. (이클립스 애플리케이션으로 실행하면서) 디버깅 할 때,이 액티베이터의 start()stop() 메소드가 호출되지 않은 것으로 나타났습니다.Eclipse 플러그인 번들이 시작 상태로 고정됨

the guide on what to do when your bundle isn't visible in Eclipse 다음과 같은 결과가 발생했습니다.

  • ss 명령을 사용하면 내 번들이 나열된 것을 볼 수 있습니다. 내 번들의
  • 상태는

번들이 시작하는 과정에 'Starting'입니다. 번들은 해당 start 메서드가 활성화되어있는 경우 STARTING 상태입니다. 번들의 BundleActivator.start(BundleContext)이 호출되면 번들은 이되어야합니다. BundleActivator.start 메서드가 예외없이 완료되면 번들이 성공적으로 시작되었으며 ACTIVE 상태로 이동해야합니다.

start 메서드의 첫 줄에 배치 된 중단 점이 적중되지 않습니다. System.out.println도 콘솔에 나타나지 않습니다. 무엇이 start 메서드가 호출되지 않을 수 있으며, 따라서 상태가 달라 붙어 STARTING?

+1

는 플러그인에서 아무것도 실제로 시험이 시점에서 사용되었습니다? 당신의 관점, 편집자 등을 열려고합니까? 플러그인 확장 중 하나를 사용하려고 할 때만 시작 코드가 실행됩니다. –

+0

@ChrisGerken 흥미로운 의견입니다. 아마도 대답이 될 것입니다. 항상 시작시 실행해야하는 플러그인 인 '서비스'를 만들려고합니다. 어떻게 강제로 시작할 수 있습니까? 또한 왜 주정부는 '스타팅 (STARTING)'하고 '결의 (RESOLVED)'하지 않았는가? –

+0

아이디어는 Eclipse 시작 시간을 최소화하는 것이 었습니다. 플러그인으로 제공되는 관점에서 플러그인을 시작하는 것 이외의 다른 방법을 강요하는 방법을 잘 모르겠습니다.배포 된 Eclipse 애플리케이션 에서처럼 헤드리스 앱으로 플러그인을 시작할 수 있다는 것을 알고 있습니다. 아마도 여기에 사용할 수있는 명령 줄 매개 변수의 변형이있을 수 있습니다. 그건 그렇고, 문제가 게으른 초기화인지 쉽게 알 수 있습니다. –

답변

2

다음은 OSGi 콘솔이 플러그인을 STARTING으로보고한다는 사실을 설명하지는 않지만 Eclipse 시작 후 플러그인 시작 방법에 대한 설명입니다.

Chris Gerken points out in a comment으로, 시작 코드는 플러그인 확장 중 하나를 사용하려고 할 때만 실행됩니다.

org.eclipse.ui.startup 확장을 사용하면 시작할 때 활성화하려는 플러그인을 등록 할 수 있습니다. 매니페스트 편집기를 사용하여이를 설정할 수 있습니다.

  1. "종속성"탭에 종속성으로 org.eclipse.ui을 추가하십시오.
  2. "확장명"탭에 시작 확장명 (org.eclipse.ui.startup)을 추가하십시오.
  3. "Extension Element Details"아래에 org.eclipse.ui.IStartup을 구현하는 클래스를 제공하십시오.

startup extension

는 TaskManager.java

public class TaskManager implements IStartup 
{ 
    @Override 
    public void earlyStartup() 
    { 
     // This will get called when Eclipse is started, 
     // after the GUI has been initialized. 
    } 
}