我有一个Cocoa应用程序,它在单独的线程中运行Java虚拟机(通过JNI)。该应用程序注册事件处理程序以处理URL协议myprotocol://。注册是这样实现的:
$success->next_result();
$success->free_result();
handleGetURLEvent是我的处理程序方法。
如果我没有启动JVM线程,则会调用处理程序。如果我启动JVM线程并且在JVM中运行的Java应用程序达到初始化AWT gui的程度,则不会调用处理程序。任何想法?
答案 0 :(得分:0)
我已经解决了。 Java在加载Swing / AWT后将其自身安装为AppleEvents的目标。不知道为什么。它刚刚取代了我的事件处理程序我只是在Java设置之后再次设置我的事件处理程序(替换Java的一个)。我使用此代码设置事件处理程序:
NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];