从JNI推出的Cocoa类

时间:2009-12-07 17:46:28

标签: java cocoa java-native-interface

我目前有代码使用JNI从java调用我的cocoa应用程序,在cocoa端的JNI函数中我创建了一个新线程,并像主函数那样分配我的NSApp委托。这是我在虚拟类中使用的代码,它创建了我的真正的类:

@implementation MenuLauncher 

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

@end

这是我主要功能中的内容的副本,只有这是在一个主题中。

结果是Menu创建的界面没有响应,只给出了spinny沙滩球。

我在java端做一个简单的sleep语句来保持进程的活跃性。可可gui应该在它自己的线程中运行。那为什么要冷冻?

1 个答案:

答案 0 :(得分:0)

您可能需要在主线程上运行Cocoa代码。此外,可能需要为java命令指定“-XstartOnFirstThread”标志(与SWT应用程序一样)。