如要翻譯 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 (也就是標頭的位置)。
- 確認您已安裝 Xcode。
- 執行
xcode-select --install
以安裝指令列工具。 - 執行
xcodebuild -showsdks
,應顯示至少一個適用於 OS X、iOS、 以及 iOS 模擬器 - 如果失敗,請刪除 Xcode 應用程式,然後執行步驟 1。
j2objcc
會採取哪些標記?
j2objcc
指令碼只是 Objective-C 編譯器 clang 的包裝函式。
執行 man cc
或 man 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]