Memulai

Pertama, antara lain:

Untuk menerjemahkan file sumber Java (misalnya, 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

Untuk mengompilasi file yang diterjemahkan:

j2objcc -c Hello.m

j2objcc adalah skrip wrapper yang memanggil compiler C (biasanya clang, alias LLVM, compiler C/C++/Objective-C Apple). Untuk mem-build file yang dapat dieksekusi:

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

j2objcc meneruskan opsi apa pun yang Anda tentukan untuk compiler Objective-C. Misalnya, untuk menerjemahkan dan melakukan build dengan simbol proses debug, gunakan flag -g:

j2objcc -g -o hello Hello.m

Pertanyaan Umum (FAQ)

Saat saya menjalankan j2objcc, muncul pesan bahwa "Foundation/Foundation.h" tidak ditemukan.

Jika kompilasi gagal karena Foundation/Foundation.h tidak ditemukan, masalahnya adalah iOS SDK tidak ditemukan (di situlah header tersebut).

  1. Pastikan Anda telah menginstal Xcode.
  2. Instal alat command line dengan menjalankan xcode-select --install.
  3. Jalankan xcodebuild -showsdks, yang akan menampilkan setidaknya satu SDK untuk Simulator OS X, iOS, dan iOS.
  4. Jika gagal, hapus aplikasi Xcode dan lanjutkan ke langkah 1.

Tanda apa yang diambil j2objcc?

Skrip j2objcc hanyalah wrapper di sekitar compiler Objective-C, clang. Jalankan man cc atau man clang untuk mencantumkan opsinya.

Saat mengompilasi dengan j2objcc, file header (.h) project saya tidak dapat ditemukan.

Compiler perlu mengetahui direktori tempat file yang diterjemahkan berada, menggunakan -I <directory>. Jadi, jika file dibuat dengan j2objc -d foo/bar ..., perintah j2objcc memerlukan -Ifoo/bar. Jika tidak ada direktori output yang ditentukan dalam perintah j2objc, -I. perlu ditambahkan.

Bagaimana cara menjalankannya di Windows atau Linux?

J2ObjC adalah alat iOS yang ditujukan untuk pengembangan di Mac OS X. Anda tidak dapat mengompilasi kode apa pun yang diterjemahkan karena memerlukan OS X atau iOS SDK dari Apple, yang mengharuskan SDK-nya hanya digunakan di Mac.

Namun, karena penerjemah J2ObjC adalah aplikasi Java murni, penerjemahan dapat dilakukan di sistem lain. Di Linux, skrip j2objc tidak akan berubah. Penggunaan Windows memerlukan CygWin, atau memanggil Java secara langsung. Untuk memanggil penerjemah tanpa skrip j2objc, gunakan kode berikut dengan J2OBJC_DIR adalah direktori tempat file distribusi J2ObjC diekstrak:

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