開始使用

首先,請採取下列任一做法:

如要翻譯 Java 來源檔案 (例如,Hello.java):

public class Hello {
  public static void main(String[] args) {
    System.out.println("hello, world");
  }
}
j2objc Hello.java
translating Hello.java
Translated 1 file: 0 errors, 0 warnings

如何編譯翻譯後的檔案:

j2objcc -c Hello.m

j2objcc 是可以叫用 C 編譯器的包裝函式指令碼 (通常是 clang,也就是 LLVM、Apple 的 C/C++/Objective-C 編譯器)。如要建構執行檔:

j2objcc -o hello Hello.o
./hello Hello
hello, world

j2objcc 會轉寄您為 Objective-C 編譯器指定的任何選項。舉例來說,如要用偵錯符號轉譯及建構內容,請使用 -g 標記:

j2objcc -g -o hello Hello.m

常見問題

執行 j2objcc 時,系統指出找不到「Foundation/Foundation.h」,

如果系統找不到 Foundation/Foundation.h,導致編譯失敗,問題在於系統找不到 iOS SDK (這就是標頭的位置)。

  1. 確認您已安裝 Xcode。
  2. 執行 xcode-select --install 以安裝指令列工具。
  3. 執行 xcodebuild -showsdks,應該顯示至少一個適用於 OS X、iOS 和 iOS 模擬器的 SDK。
  4. 如果失敗,請刪除 Xcode 應用程式,然後前往步驟 1。

j2objcc 會採用哪些標記?

j2objcc 指令碼只是 Objective-C 編譯器 clang 的包裝函式。 執行 man ccman clang 以列出選項。

使用 j2objcc 編譯時,找不到專案的標頭 (.h) 檔案。

編譯器必須使用 -I <directory> 取得翻譯後檔案的目錄位置。因此,如果檔案是透過 j2objc -d foo/bar ... 產生,則 j2objcc 指令需要 -Ifoo/bar。如果在 j2objc 指令中未指定輸出目錄,則必須新增 -I.

如何在 Windows 或 Linux 上執行?

J2ObjC 是在 Mac OS X 上開發的 iOS 工具,您無法編譯任何已翻譯的程式碼,因為 Apple 需要 Apple 的 OS X 或 iOS SDK,而該 SDK 的 SDK 只能在 Mac 上使用。

然而,由於 J2ObjC 翻譯工具是純粹的 Java,因此可以在其他系統上進行轉譯。在 Linux 中,j2objc 指令碼應保持不變。Windows 用途需要 CygWin 或直接叫用 Java。如要在不使用 j2objc 指令碼的情況下叫用翻譯工具,請在下列其中使用 J2OBJC_DIR 做為解壓縮 J2ObjC 發布檔案的目錄:

java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]