2012-10-25 97 views
3

我試圖從目標C,iPhone 5應用程序調用Java類。我正在使用Xcode 4.5.1。在這個階段,我甚至無法加載虛擬機,而不以下錯誤:Xcode 4.5.1:鏈接器錯誤:NSJavaVirtualMachine,找不到體系結構的符號i386

未定義的符號i386硬件架構:

「_OBJC_CLASS _ $ _ NSJavaVirtualMachine」,從引用:在主 objc級-REF。 ø LD:符號(多個)未找到i386硬件架構 鐺:錯誤:連接器命令失敗,退出代碼1(使用-v看調用)

這些是我按照以下步驟,

1 )main.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 

JA va類路徑和Java根目錄

兩者都設置爲存儲我的Java文件的全局目錄。

我想調用Java類Vector的add和get函數。但我似乎無法將虛擬機加載到Xcode中! 請幫忙。

+0

請確保您的'JavaVM.Framework'具有i386架構(如果您在模擬器中使用它)。對於真實的設備,框架應該支持'armv6 armv7'和可選的'armv7s'(iPhone 5) – Raptor

+0

謝謝。 是的,在「必需的設備功能」中,它顯示它支持ARMv7。如何檢查JavaVM.Framework在模擬器上是否具有i386體系結構?僅供參考,我使用的是64位Mac(Mountain Lion)。 – govind678

+0

你確定JavaVM框架可以在iPhone App中使用嗎?我認爲它只適用於Mac App ... – Raptor

回答

0

你不能在iOS上使用NSJavaVirtualMachine。 Cocoa/Java綁定僅適用於OS X,甚至在那裏它們已被棄用。

+0

非常感謝。那麼,我們最終會在最後記錄ObjC中的所有內容(花費了整整一個月的時間)。 – govind678

相關問題