我必须将java代码转换为objective-c代码。 在这里,我必须编写以下代码并在我的终端上运行:
$ cat 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 -o hello Hello.o
当我在终端上运行 $ j2objcc -o hello Hello.o 时,我收到以下错误。
$ j2objcc -o hello Hello.o
Undefined symbols:
"_objc_autoreleasePoolPop", referenced from:
-[JavaLangThread run] in libjre_emul.a(Thread.o)
"_objc_autoreleasePoolPush", referenced from:
-[JavaLangThread run] in libjre_emul.a(Thread.o)
ld: symbol(s) not found
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如何解决此错误?
答案 0 :(得分:2)
您需要添加解压缩j2objc分发包的位置的路径。例如:
$ cd $HOME
$ unzip ~/Downloads/j2objc-*.zip
$ export PATH=${PATH}:${HOME}/j2objc
注意:上面的导出命令需要添加到$ {HOME} / .bashrc文件中,以便在您注销并重新登录时进行设置。
答案 1 :(得分:1)
您评论您正在使用XCode 3.2.6。目前,J2ObjC似乎需要 XCode 4 + 。