開始使用

首先,取得來源建構

如要翻譯 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 模擬器
  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 的 OS X 或 iOS 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]