はじめに

まず、ソースを入手し、 構築します。

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 コンパイラを呼び出すラッパー スクリプトである (通常は clang。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 Simulator があります。
  4. 失敗した場合は、Xcode アプリケーションを削除してステップ 1 に進みます。

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 は、Mac OS X での開発に対応した iOS ツールです。コンパイルできない 変換には、Apple の OS X または iOS SDK が必要です。 Mac でのみ SDK を使用する必要があります。

ただし、J2ObjC トランスレータは純粋な Java であるため、Java のみの翻訳は実行できます。 分析できますLinux では、j2objc スクリプトは変更なしで動作します。Windows CygWin か、Java 直接渡されます。j2objc スクリプトなしでトランスレータを呼び出すには、 ここで、J2OBJC_DIR はイメージが格納されているディレクトリです。 J2ObjC 配布ファイルを解凍しました。

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