在Mac上从Objective C调用Java库

在Mac上从Objective C调用Java库,java,objective-c,java-native-interface,Java,Objective C,Java Native Interface,我想使用Cocoa+Objective C创建本机MacOSX应用程序,但我需要连接到专有数据源,为此,数据源的所有者只提供Java库。所以我需要以某种方式将这个Java库导入到我的项目中,并调用它的Java类上的函数(或者围绕这个库创建Java包装器,然后从objective-C调用我的包装器) 现在,我该怎么做?快速的谷歌搜索让我找到了JNI,但我还没有找到任何好的和实际的(当前的)文章/教程。我真的需要一些“如何”文章,如何加载这个java库,如果需要的话启动VM,以及如何创建java对象

我想使用Cocoa+Objective C创建本机MacOSX应用程序,但我需要连接到专有数据源,为此,数据源的所有者只提供Java库。所以我需要以某种方式将这个Java库导入到我的项目中,并调用它的Java类上的函数(或者围绕这个库创建Java包装器,然后从objective-C调用我的包装器)

现在,我该怎么做?快速的谷歌搜索让我找到了JNI,但我还没有找到任何好的和实际的(当前的)文章/教程。我真的需要一些“如何”文章,如何加载这个java库,如果需要的话启动VM,以及如何创建java对象和调用它们上的函数。真的很简单,我可以从那里开始。谢谢


为了澄清,我重复一遍:我想从Objective-C调用Java函数,我不想从Java调用本机函数。

您正在寻找Java Objective C桥,请尝试或在苹果的开发人员网站上。请注意,它已被弃用,也就是说,它没有跟上对Cocoa的更改。但是,如果您只是将其用于传递标准Java数据类型的API,您应该可以。

您可能正在寻找,它的一个鲜为人知的角落允许您在进程中加载Java运行时


这就是说,使用Java服务应用程序与Objective-C应用程序通过进行通信可能会更轻松。

+1使用单独的进程。用Java编写与您的数据源和Objective-C应用程序通信的服务可能会容易得多。嗨,Jeffrey,是的,我看到了调用API,我会仔细看看。java应用程序和我的cocoa应用程序通过套接字进行通信的想法非常好。但我更愿意在后台启动这个java应用程序,因为我的cocoa应用程序不是一直作为服务运行的,你知道这样做是否可行吗?(我曾经是.net开发人员6年,现在只做了4个月的mac,如果我的问题很愚蠢,我很抱歉)您的Objective-C应用程序没有理由在必要时不能将Java应用程序作为应用程序启动(如启动任何其他二进制文件)。然后可以使用套接字与它通信。您甚至可以实现一个“End”命令,让它在完成后自行终止,这样它只在需要时运行。在连接到它之前,您必须延迟几秒钟,java启动应用程序的速度非常慢。这里有一个使用调用API的示例:从Snow Leopard开始,桥现在根本不存在:(