आरंभ करना

सबसे पहले, सोर्स पाएं और इसे बनाएं.

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 कंपाइलर को शुरू करती है (सामान्य रूप से क्लैंग, जिसे 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 नहीं मिला (जहां वह हेडर है).

  1. पक्का करें कि आपने Xcode इंस्टॉल किया हो.
  2. xcode-select --install चलाकर, कमांड-लाइन टूल इंस्टॉल करें.
  3. xcodebuild -showsdks चलाएं, जिसमें OS X, iOS, और iOS सिम्युलेटर.
  4. अगर यह काम नहीं करता है, तो Xcode ऐप्लिकेशन को मिटाएं और पहले चरण पर जाएं.

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 स्क्रिप्ट में कोई बदलाव नहीं होना चाहिए. विंडो इस्तेमाल के लिए CygWin की ज़रूरत होती है या Java का इस्तेमाल करना ज़रूरी होता है सकता है. j2objc स्क्रिप्ट के बिना अनुवादक शुरू करने के लिए, जहां J2OBJC_DIR वह डायरेक्ट्री है जिसमें J2ObjC डिस्ट्रिब्यूशन फ़ाइल को अनज़िप किया गया:

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