Como começar

Primeiro, acesse a origem e desenvolvê-lo.

Para traduzir um arquivo de origem Java (Hello.java, por exemplo):

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

Para compilar o arquivo traduzido:

j2objcc -c Hello.m

j2objcc é um script de wrapper que invoca seu compilador C (normalmente clang, também conhecido como LLVM, linguagem de programação C/C++/Objective-C da Apple) compilador (em inglês). Para criar o executável:

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

j2objcc encaminha quaisquer opções especificadas para o compilador Objective-C. Por exemplo, para traduzir e criar com símbolos de depuração, use a flag -g:

j2objcc -g -o hello Hello.m

Perguntas frequentes

Quando administro o j2objcc, ele reclama que "Foundation/Foundation.h" não foi encontrada.

Se a compilação falhar porque Foundation/Foundation.h não é encontrado, o problema é que o SDK do iOS não foi encontrado (é aí que o cabeçalho está).

  1. Verifique se o Xcode está instalado.
  2. Execute xcode-select --install para instalar as ferramentas de linha de comando.
  3. Execute xcodebuild -showsdks, que precisa mostrar pelo menos um SDK para OS X, iOS e e iOS Simulator.
  4. Se isso falhar, exclua o aplicativo Xcode e pule para a etapa 1.

Quais sinalizações o j2objcc usa?

O script j2objcc é apenas um wrapper em torno do compilador do Objective-C, clang. Execute man cc ou man clang para listar as opções.

Durante a compilação com j2objcc, os arquivos de cabeçalho (.h) do meu projeto não foram encontrados.

O compilador precisa saber o diretório em que estão os arquivos traduzidos. usando -I <directory>. Então, se os arquivos foram gerados j2objc -d foo/bar ..., o comando j2objcc vai precisar de -Ifoo/bar. Se nenhum diretório de saída for especificado no comando j2objc, adicione -I..

Como executar no Windows ou no Linux?

J2ObjC é uma ferramenta do iOS para desenvolvimento no Mac OS X. Não é possível compilar qualquer código traduzido, porque requer um SDK OS X ou iOS da Apple, que exige que os SDKs sejam usados apenas em Macs.

No entanto, como o tradutor J2ObjC é Java puro, a tradução pode ser feita no outros sistemas. No Linux, o script j2objc deve funcionar inalterado. Janelas usar requer o CygWin ou a invocação de Java diretamente. Para invocar o tradutor sem o script j2objc, use o seguindo, em que J2OBJC_DIR é o diretório em que O arquivo de distribuição J2ObjC foi descompactado:

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