Xcode 4.5.1:链接器错误:NSJavaVirtualMachine,未找到架构i386的符号

Xcode 4.5.1:链接器错误:NSJavaVirtualMachine,未找到架构i386的符号,java,objective-c,linker-errors,undefined-symbol,bridge,Java,Objective C,Linker Errors,Undefined Symbol,Bridge,我试图从objective C、iPhone 5应用程序调用Java类。我使用的是Xcode 4.5.1。在此阶段,如果没有以下错误,我甚至无法加载虚拟机: 架构i386的未定义符号: “_OBJC_CLASS_$_NSJavaVirtualMachine”,引用自: main.o中的objc类引用 ld:未找到架构i386的符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 这是我遵循的步骤 1) 总的来说,m: @autoreleasepool { [NSJa

我试图从objective C、iPhone 5应用程序调用Java类。我使用的是Xcode 4.5.1。在此阶段,如果没有以下错误,我甚至无法加载虚拟机:

架构i386的未定义符号:

“_OBJC_CLASS_$_NSJavaVirtualMachine”,引用自: main.o中的objc类引用 ld:未找到架构i386的符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)

这是我遵循的步骤

1) 总的来说,m:

@autoreleasepool {

      [NSJavaVirtualMachine defaultVirtualMachine]; //Added this line to load the Java VM.

        id vector=[[NSClassFromString(@"java.util.Vector") alloc] init];
        [vector add:@"one item!"];
        NSLog(@"item 1=%@",[vector get:0]);

 return 0;

}
2) 我通过以下方式添加了JavaVM.Framework: (右键单击)框架->将文件添加到项目->JavaVM.Framework->(将项目复制到目标组的文件夹并创建文件夹引用…->单击添加

(它还显示在构建阶段->将二进制文件链接到库中)

3) 在info.plist中,添加了以下属性:

Cocoa Java Application = Yes
Java类路径和Java根目录

这两个文件都被设置为全局目录,我在其中存储Java文件

我试图调用Java类
Vector
的add和get函数。但我似乎根本无法将VM加载到Xcode中!
请帮助。

您无法在iOS上使用NSJavaVirtualMachine。Cocoa/Java绑定仅在OS X上可用,即使在那里也不推荐使用。

确保您的
JavaVM.Framework
具有i386体系结构(如果您在模拟器中使用它)。对于真正的设备,框架应该支持
armv6 armv7
和可选的
armv7s
(iPhone 5)谢谢。是的,在“必需的设备功能”中,它显示它支持ARMv7s。如何在模拟器上检查JavaVM.Framework是否具有i386架构?仅供参考,我使用的是64位Mac(Mountain Lion)。你确定JavaVM框架可以用于iPhone应用程序吗?我认为它只适用于Mac应用程序……好吧,我猜是这样的,因为我已经看到很多关于堆栈溢出的帖子成功地做到了这一点。我觉得这与新版本的Xcode不能支持JavaVM有关。我以前从未从Objective C调用过Java类。。。Java应用程序得到苹果的批准了吗?非常感谢。好吧,我们最终在ObjC中重新编码了所有内容(花了整整一个月)。