ขั้นแรก ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
- ดาวน์โหลดการเผยแพร่ปัจจุบันจากส่วนผลงาน และแตกไฟล์ ZIP หรือ
- รับแหล่งที่มาและสร้าง
หากต้องการแปลไฟล์ต้นฉบับ 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 คือสคริปต์ Wrapper ที่จะเรียกใช้คอมไพเลอร์ C (โดยทั่วไปจะเป็น clang หรือ LLVM, คอมไพเลอร์ C/C++/Objective-C ของ Apple) วิธีสร้างไฟล์ปฏิบัติการ
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 อย่างน้อย 1 รายการสำหรับ OS X, iOS และ iOS Simulator - หากไม่สำเร็จ ให้ลบแอปพลิเคชัน Xcode และไปที่ขั้นตอนที่ 1
j2objcc
จะรับการรายงานปัญหาใดบ้าง
สคริปต์ j2objcc
เป็นเพียง Wrapper รอบๆ คอมไพเลอร์ 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]