Memulai

Pertama, dapatkan sumber dan membangunnya.

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 kompiler C Anda (biasanya clang, juga dikenal sebagai LLVM, C/C++/Objective-C Apple compiler). Untuk membangun file yang dapat dieksekusi:

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

j2objcc meneruskan opsi apa pun yang Anda tentukan untuk kompilator Objective-C. Misalnya, untuk menerjemahkan dan membangun aplikasi dengan simbol proses debug, gunakan tanda -g:

j2objcc -g -o hello Hello.m

Pertanyaan Umum (FAQ)

Saat saya menjalankan j2objcc, aplikasi ini mengeluhkan bahwa "Foundation/Foundation.h" tidak ditemukan.

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

  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 OS X, iOS, dan iOS Simulator.
  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.

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

Bagaimana cara menjalankan aplikasi di Windows atau Linux?

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

Namun, karena penerjemah J2ObjC adalah murni Java, penerjemahan dapat dilakukan pada sistem lain. Di Linux, skrip j2objc seharusnya berfungsi tanpa perubahan. Jendela Anda memerlukan CygWin, atau memanggil Java secara langsung. Untuk memanggil penerjemah tanpa skrip j2objc, gunakan metode mengikuti, dengan J2OBJC_DIR sebagai direktori tempat File distribusi J2ObjC telah diekstrak:

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