0

可能重复:
在 Objective-C Mac 应用程序中使用 Java 库,并将该应用程序放在 Mac App Store

我正在为 Objective-C 中的 Mac-Osx 应用程序开发。我有一个 JAR 文件,其中包含一些专有类及其相关方法。我想在我的 Objective-C 程序/代码/应用程序中使用这些方法。

我怎样才能做到这一点 ?

对此的任何帮助都是令人钦佩的。

谢谢..!

在下面的代码中,我在 Line (*env)->GetJavaVM(env, pvm) ; 并且JNI_GetDefaultJavaVMInitArgs显示为已弃用(警告)。outCreatedVMCount始终为 0。

- (JNIEnv *)getJNIEnv
{
    static JNIEnv* sAppKitEnv = NULL;
    static JavaVM *sJVM = NULL;

    if (sAppKitEnv == NULL) {       
        if (sJVM == NULL) {
            JavaVM *createdJVMs;
            jint outCreatedVMCount;
            if (JNI_GetCreatedJavaVMs(&createdJVMs, sizeof(createdJVMs), &outCreatedVMCount) == 0) {
                if (outCreatedVMCount > 0) {
                    sJVM = createdJVMs;
                }
            }
        }

        // If we didn't find one, we're stuck.
        if (sJVM != NULL) {
            (*sJVM)->AttachCurrentThreadAsDaemon(sJVM, (void **)&sAppKitEnv, nil);
        }
    }

    return sAppKitEnv;
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

    [self performSelector:@selector(initvm) withObject:nil afterDelay:0.2];

}

-(void) initvm
{
    JavaVM **pvm;
    //void **pJNIEnv;
    JavaVMInitArgs *args;
    JNI_GetDefaultJavaVMInitArgs(&args);
    JNIEnv *env=[self getJNIEnv];
    (*env)->GetJavaVM(env, pvm);
}
4

1 回答 1

0

Cocoa 和 Java 之间有一座桥梁,但它已被弃用并且没有很好的文档记录。据说,它仍然有效。在这里阅读更多。

祝你好运!告诉我们它是如何工作的:)

于 2012-09-12T06:38:35.240 回答