Во-первых, либо:
- Загрузите текущий дистрибутив из раздела Релизы и разархивируйте его, или
- Получите исходный код и соберите его .
Чтобы перевести исходный файл 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 не найден (именно там находится этот заголовок).
- Убедитесь, что у вас установлен Xcode.
- Установите инструменты командной строки, запустив
xcode-select --install
. - Запустите
xcodebuild -showsdks
, который должен показать хотя бы один SDK для OS X, iOS и симулятора iOS. - Если это не помогло, удалите приложение 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 — это инструмент iOS, предназначенный для разработки в Mac OS X. Вы не можете скомпилировать переведенный код, поскольку для него требуется OS X или iOS SDK от Apple, что требует, чтобы его SDK использовались только на Mac.
Однако, поскольку переводчик 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]