スタートガイド

まず、以下のいずれかを行います。

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 用の SDK が 1 つ以上表示されます。
  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 SDK または iOS SDK(Mac でのみ SDK を使用する必要があるため)が必要です。

ただし、J2ObjC トランスレータは純粋な 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]