Premiers pas

Tout d'abord, récupérez la source, puis le créer.

Pour traduire un fichier source Java (Hello.java, par exemple):

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

Pour compiler le fichier traduit:

j2objcc -c Hello.m

j2objcc est un script wrapper qui appelle votre compilateur C. (normalement clang, également appelé LLVM, C/C++/Objective-C d'Apple compilateur). Pour créer l'exécutable:

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

j2objcc transfère les options que vous spécifiez pour le compilateur Objective-C. Par exemple, pour traduire et compiler avec des symboles de débogage, utilisez l'indicateur -g:

j2objcc -g -o hello Hello.m

Questions fréquentes

Lorsque j'exécute j2objcc, le système me plaint que "Foundation/Foundation.h" est introuvable.

Si la compilation échoue parce que Foundation/Foundation.h est introuvable, le problème est que le SDK iOS est introuvable (c'est là que se trouve cet en-tête).

  1. Assurez-vous que Xcode est installé.
  2. Installez les outils de ligne de commande en exécutant xcode-select --install.
  3. Exécutez xcodebuild -showsdks. Elle devrait afficher au moins un SDK pour OS X, iOS, et iOS Simulator.
  4. En cas d'échec, supprimez l'application Xcode et passez à l'étape 1.

Quels indicateurs sont pris en compte par j2objcc ?

Le script j2objcc n'est qu'un wrapper autour du compilateur Objective-C, clang. Exécutez man cc ou man clang pour lister ses options.

Lors de la compilation avec j2objcc, les fichiers d'en-tête (.h) de mon projet sont introuvables.

Le compilateur doit connaître le répertoire dans lequel se trouvent les fichiers traduits, avec -I <directory>. Donc, si les fichiers ont été générés avec j2objc -d foo/bar ..., alors la commande j2objcc a besoin de -Ifoo/bar. Si aucun répertoire de sortie n'était spécifié dans la commande j2objc, vous devez ajouter -I..

Comment exécuter mon application sous Windows ou Linux ?

J2ObjC est un outil iOS conçu pour le développement sur Mac OS X. Vous ne pouvez pas compiler du code traduit, car il nécessite le SDK OS X ou iOS d'Apple, ce qui nécessite que ses SDK ne soient utilisés que sur Mac.

Cependant, comme le traducteur J2ObjC est en Java pur, la traduction peut être effectuée sur avec d'autres systèmes. Sous Linux, le script j2objc devrait fonctionner tel quel. Windows requiert CygWin ou Java. directement. Pour appeler le traducteur sans le script j2objc, utilisez la méthode suivant, où J2OBJC_DIR est le répertoire dans lequel Le fichier de distribution J2ObjC a été décompressé:

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