Bắt đầu

Đầu tiên, hãy chọn một trong hai cách sau:

Để dịch tệp nguồn Java (ví dụ: 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

Để biên dịch tệp đã dịch, hãy làm như sau:

j2objcc -c Hello.m

j2objcc là một tập lệnh bao bọc gọi trình biên dịch C (thường là clang, còn gọi là LLVM, trình biên dịch C/C++/Objective-C của Apple). Cách tạo tệp thực thi:

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

j2objcc chuyển tiếp mọi tuỳ chọn mà bạn chỉ định cho trình biên dịch Objective-C. Ví dụ: để dịch và xây dựng bằng các biểu tượng gỡ lỗi, hãy sử dụng cờ -g:

j2objcc -g -o hello Hello.m

Câu hỏi thường gặp

Khi chạy j2objcc, hệ thống sẽ thông báo rằng không tìm thấy "Foundation/Foundation.h".

Nếu biên dịch không thành công do không tìm thấy Foundation/Foundation.h, thì vấn đề là không tìm thấy SDK iOS (tức là nơi có tiêu đề đó).

  1. Đảm bảo bạn đã cài đặt Xcode.
  2. Cài đặt công cụ dòng lệnh bằng cách chạy xcode-select --install.
  3. Chạy xcodebuild -showsdks để hiển thị ít nhất một SDK cho Trình mô phỏng OS X, iOS và iOS.
  4. Nếu không thành công, hãy xoá ứng dụng Xcode rồi chuyển sang bước 1.

j2objcc sử dụng những loại cờ nào?

Tập lệnh j2objcc chỉ là một trình bao bọc xung quanh trình biên dịch Objective-C, clang. Chạy man cc hoặc man clang để liệt kê các tuỳ chọn tương ứng.

Khi biên dịch bằng j2objcc, hệ thống không tìm thấy các tệp tiêu đề (.h) của dự án của tôi.

Trình biên dịch cần biết thư mục chứa các tệp đã dịch, bằng cách sử dụng -I <directory>. Vì vậy, nếu tệp được tạo bằng j2objc -d foo/bar ..., thì lệnh j2objcc sẽ cần -Ifoo/bar. Nếu không có thư mục đầu ra nào được chỉ định trong lệnh j2objc, thì bạn cần thêm -I..

Làm cách nào để chạy trên Windows hoặc Linux?

J2ObjC là một công cụ iOS được phát triển trên Mac OS X. Bạn không thể biên dịch bất kỳ mã đã dịch nào vì mã này yêu cầu hệ điều hành OS X hoặc SDK iOS của Apple. Điều này đòi hỏi bạn chỉ sử dụng được SDK trên máy Mac.

Tuy nhiên, vì trình biên dịch J2ObjC là Java thuần tuý, nên bạn có thể dịch trên các hệ thống khác. Trên Linux, tập lệnh j2objc sẽ không thay đổi. Việc sử dụng Windows yêu cầu CygWin hoặc gọi Java trực tiếp. Để gọi trình dịch mà không cần tập lệnh j2objc, hãy sử dụng nội dung sau, trong đó J2OBJC_DIR là thư mục nơi tệp phân phối J2ObjC được giải nén:

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