开始使用

首先,获取源代码构建它

如需转换 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 是一款 iOS 工具,用于在 Mac OS X 上进行开发。您无法编译 因为它需要使用来自 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]