شروع شدن

اول، یا:

برای ترجمه یک فایل منبع جاوا (به عنوان مثال 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، کامپایلر 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 اجرا کنید، که باید حداقل یک SDK را برای OS X، iOS و iOS Simulator نشان دهد.
  4. اگر موفق نشد، برنامه Xcode را حذف کنید و به مرحله 1 بروید.

j2objcc چه پرچم هایی می گیرد؟

اسکریپت j2objcc فقط یک بسته بندی در اطراف کامپایلر Objective-C است. man cc یا man clang اجرا کنید تا گزینه های آن فهرست شود.

هنگام کامپایل کردن با j2objcc ، فایل های هدر (.h) پروژه من یافت نمی شود.

کامپایلر باید دایرکتوری را که فایل های ترجمه شده در آن قرار دارند، با استفاده از -I <directory> بشناسد. بنابراین اگر فایل‌ها با j2objc -d foo/bar ... تولید شده‌اند، دستور j2objcc به -Ifoo/bar نیاز دارد. اگر هیچ دایرکتوری خروجی در دستور j2objc مشخص نشده بود، -I. باید اضافه شود.

چگونه روی ویندوز یا لینوکس اجرا کنم؟

J2ObjC یک ابزار iOS است که برای توسعه در Mac OS X است. شما نمی توانید هیچ کد ترجمه شده ای را کامپایل کنید زیرا به یک OS X یا iOS SDK از اپل نیاز دارد، که لازم است SDK های آن فقط در Mac استفاده شوند.

با این حال، از آنجایی که مترجم J2ObjC خالص جاوا است، ترجمه را می توان در سیستم های دیگر انجام داد. در لینوکس، اسکریپت j2objc باید بدون تغییر کار کند. استفاده از ویندوز به CygWin یا فراخوانی مستقیم جاوا نیاز دارد. برای فراخوانی مترجم بدون اسکریپت j2objc، از موارد زیر استفاده کنید که در آن J2OBJC_DIR دایرکتوری است که فایل توزیع J2ObjC در آن از حالت فشرده خارج شده است:

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