Guida introduttiva

Innanzitutto, ottieni l'origine e crearlo.

Per tradurre un file sorgente Java (ad esempio 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

Per compilare il file tradotto:

j2objcc -c Hello.m

j2objcc è uno script wrapper che chiama il compilatore C (generalmente clang, noto anche come LLVM, C/C++/Objective-C di Apple compilatore). Per creare l'eseguibile:

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

j2objcc inoltra le opzioni specificate per il compilatore Objective-C. Ad esempio, per tradurre e creare con i simboli di debug, utilizza il flag -g:

j2objcc -g -o hello Hello.m

Domande frequenti

Quando eseguo j2objcc, viene visualizzato il messaggio "Foundation/Foundation.h" non trovato.

Se la compilazione non va a buon fine perché non viene trovata la soluzione Foundation/Foundation.h, il problema è che l'SDK per iOS non è stato trovato (è qui che si trova l'intestazione).

  1. Assicurati di aver installato Xcode.
  2. Installa gli strumenti a riga di comando eseguendo xcode-select --install.
  3. Esegui xcodebuild -showsdks, che dovrebbe mostrare almeno un SDK per OS X, iOS e iOS.
  4. Se il problema persiste, elimina l'applicazione Xcode e vai al passaggio 1.

Quali segnalazioni riceve j2objcc?

Lo script j2objcc è solo un wrapper per il compilatore Objective-C, clang. Esegui man cc o man clang per elencare le opzioni.

Durante la compilazione con j2objcc, i file di intestazione (.h) del mio progetto non sono stati trovati.

Il compilatore deve conoscere la directory in cui si trovano i file tradotti, utilizzando -I <directory>. Quindi se i file sono stati generati j2objc -d foo/bar ..., il comando j2objcc avrà bisogno di -Ifoo/bar. Se la directory di output non è specificato nel comando j2objc, è necessario aggiungere -I..

Come posso essere eseguito su Windows o Linux?

J2ObjC è uno strumento iOS per lo sviluppo su Mac OS X. Non puoi compilare qualsiasi codice tradotto perché richiede un SDK OS X o iOS di Apple, che richiede l'utilizzo dei suoi SDK solo su Mac.

Tuttavia, poiché il traduttore J2ObjC è puro Java, la traduzione può essere eseguita e altri sistemi. Su Linux, lo script j2objc dovrebbe funzionare senza modifiche. Finestre richiede CygWin o richiama Java . Per richiamare il traduttore senza lo script j2objc, utilizza la classe dove J2OBJC_DIR è la directory in cui Il file di distribuzione J2ObjC è stato decompresso:

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