Informationen für Einsteiger

Dazu haben Sie zwei Möglichkeiten:

So übersetzen Sie eine Java-Quelldatei (zum Beispiel 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

So kompilieren Sie die übersetzte Datei:

j2objcc -c Hello.m

j2objcc ist ein Wrapper-Skript, das den C-Compiler (normalerweise Clang, auch LLVM, Apples C/C++/Objective-C-Compiler) aufruft. So erstellen Sie die ausführbare Datei:

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

j2objcc leitet alle Optionen weiter, die Sie für den Objective-C-Compiler angeben. Für die Übersetzung und Erstellung mit Debugging-Symbolen verwenden Sie beispielsweise das Flag -g:

j2objcc -g -o hello Hello.m

Häufig gestellte Fragen

Beim Ausführen von j2objcc wird die Meldung angezeigt, dass „Foundation/Foundation.h“ nicht gefunden wurde.

Wenn die Kompilierung fehlschlägt, weil Foundation/Foundation.h nicht gefunden wird, liegt das Problem darin, dass das iOS SDK nicht gefunden wurde (hier befindet sich der Header).

  1. Stellen Sie sicher, dass Xcode installiert ist.
  2. Führen Sie xcode-select --install aus, um die Befehlszeilentools zu installieren.
  3. Führen Sie xcodebuild -showsdks aus. Damit sollte mindestens ein SDK für OS X, iOS und der iOS-Simulator angezeigt werden.
  4. Wenn dies nicht funktioniert, löschen Sie die Xcode-Anwendung und fahren Sie mit Schritt 1 fort.

Welche Meldungen verwendet j2objcc?

Das Skript j2objcc ist nur ein Wrapper um den Objective-C-Compiler Clang. Führen Sie man cc oder man clang aus, um die Optionen aufzulisten.

Beim Kompilieren mit j2objcc werden die Header-Dateien (.h) meines Projekts nicht gefunden.

Der Compiler muss mithilfe von -I <directory> das Verzeichnis kennen, in dem sich die übersetzten Dateien befinden. Wenn die Dateien also mit j2objc -d foo/bar ... generiert wurden, benötigt der Befehl j2objcc -Ifoo/bar. Wenn im Befehl j2objc kein Ausgabeverzeichnis angegeben wurde, muss -I. hinzugefügt werden.

Wie führe ich Windows oder Linux aus?

J2ObjC ist ein iOS-Tool für die Entwicklung unter Mac OS X. Sie können keinen übersetzten Code kompilieren, da hierfür ein OS X- oder iOS-SDK von Apple erforderlich ist, dessen SDKs nur auf Macs verwendet werden können.

Da der J2ObjC-Übersetzer jedoch reines Java ist, kann die Übersetzung auch auf anderen Systemen durchgeführt werden. Unter Linux sollte das Skript j2objc unverändert funktionieren. Für die Verwendung von Windows ist entweder CygWin oder das direkte Aufrufen von Java erforderlich. Um den Übersetzer ohne das j2objc-Skript aufzurufen, verwenden Sie folgenden Befehl, wobei J2OBJC_DIR das Verzeichnis ist, in dem die J2ObjC-Distributionsdatei entpackt wurde:

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