JNI不在AppKit Thread上工作

时间:2015-06-05 22:07:07

标签: java macos swing java-native-interface

我在Mac上的Swing应用程序中调用本机函数。该调用来自 AWT-EventQueue-0 线程。我调用了一些异步本机API,并最终在 AppKit线程[NSThread isMainThread] == TRUE)中进行了回调。问题是JNI不能在AppKit线程上工作。例如,调用env-> FindClass情况会导致SIGABRT崩溃我的应用程序。但是,JNI在EventQueue线程中正常工作。

如何在 AWT-EventQueue-0 线程中执行本机回调代码或使JNI在 AppKit线程中工作?

OpenJDK 1.7,OS X 10.10,XCode 6.1.1

1 个答案:

答案 0 :(得分:0)

不确定这是否有用,因为如果没有更多信息很难确切知道发生了什么,但是当我在一个线程中存储一个env指针然后在另一个线程中使用该指针时,我遇到了这个问题。不同的线程需要自己的env指针。