如需转换 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 是一款 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]