Primero, debes hacer lo siguiente:
- Descarga la distribución actual desde la sección Lanzamientos y descomprímela.
- Obtén la fuente y compílala.
Para traducir un archivo fuente Java (por ejemplo, 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
Para compilar el archivo traducido, haz lo siguiente:
j2objcc -c Hello.m
j2objcc es una secuencia de comandos de wrapper que invoca tu compilador de C (normalmente clang, también conocido como LLVM, el compilador C/C++/Objective-C de Apple). Para compilar el archivo ejecutable, haz lo siguiente:
j2objcc -o hello Hello.o
./hello Hello
hello, world
j2objcc reenvía las opciones que especifiques para el compilador de Objective-C.
Por ejemplo, para traducir y compilar con símbolos de depuración, usa la marca -g
:
j2objcc -g -o hello Hello.m
Preguntas frecuentes
Cuando ejecuto j2objcc
, se queja de que no se encuentra "Foundation/Foundation.h".
Si la compilación falla porque no se encontró Foundation/Foundation.h, el problema es que no se encontró el SDK de iOS (es allí donde se encuentra ese encabezado).
- Asegúrate de tener Xcode instalado.
- Ejecuta
xcode-select --install
para instalar las herramientas de línea de comandos. - Ejecuta
xcodebuild -showsdks
, que debería mostrar al menos un SDK para el simulador de OS X, iOS y iOS. - Si eso falla, borra la aplicación de Xcode y ve al paso 1.
¿Qué marcas toma j2objcc
?
La secuencia de comandos j2objcc
es solo un wrapper alrededor del compilador Objective-C, clang.
Ejecuta man cc
o man clang
para mostrar sus opciones.
Cuando compilas con j2objcc
, no se pueden encontrar los archivos de encabezado (.h) de mi proyecto.
El compilador necesita conocer el directorio en el que residen los archivos traducidos mediante -I <directory>
. Por lo tanto, si los archivos se generaron con j2objc -d foo/bar ...
, el comando j2objcc
necesita -Ifoo/bar
. Si no se especificó ningún directorio de salida en el comando j2objc
, se debe agregar -I.
.
¿Cómo ejecuto en Windows o Linux?
J2ObjC es una herramienta de iOS diseñada para desarrollar apps en Mac OS X. No puedes compilar ningún código traducido porque requiere un SDK de OS X o iOS de Apple, lo que requiere que sus SDKs solo se usen en Mac.
Sin embargo, como el traductor J2ObjC es Java puro, la traducción se puede realizar en otros sistemas. En Linux, la secuencia de comandos j2objc
debería funcionar sin cambios. El uso en Windows requiere CygWin o invocar Java directamente. Para invocar al traductor sin la secuencia de comandos j2objc, usa el siguiente comando, en el que J2OBJC_DIR
es el directorio donde se descomprimió el archivo de distribución J2ObjC:
java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]