2009-12-07 2 views
0

현재 자바에서 JNI를 사용하여 내 코코아 응용 프로그램으로 호출하는 코드가 있습니다. 코코아 측의 JNI 함수에서 새 스레드를 만들고 주 함수처럼 NSApp 대리자를 할당합니다.코코아 클래스가 JNI에서 시작되었습니다.

@implementation MenuLauncher 

- (void)run { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    [NSApplication sharedApplication]; 
    Menu *menu = [Menu sharedInstance]; 
    [NSApp setDelegate:menu]; 
    [NSApp run]; 
[pool release]; 
} 

@end 

이 내 주요 기능에 무엇의 사본 만이 스레드에 있습니다 : 여기 내 진짜 클래스를 생성하는 더미 클래스에서 사용하고있는 코드입니다.

결과로 메뉴가 생성하는 인터페이스가 응답하지 않고 spinny 해변 공만 제공합니다.

나는 프로세스를 유지하기 위해 자바 측에서 간단한 sleep 문을 수행하고있다. 코코아 GUI는 자체 스레드로 실행되어야합니다. 왜 얼어 붙은거야?

답변

0

메인 스레드에서 실행되는 코코아 코드가 필요할 수 있습니다. 또한 "-XstartOnFirstThread"플래그를 java 명령에 지정해야 할 수도 있습니다 (SWT 응용 프로그램의 경우와 동일).

관련 문제