0

我必须将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)

如何解决此错误?

4

2 回答 2

2

您需要添加解压缩 j2objc 分发包的路径。例如:

$ cd $HOME
$ unzip ~/Downloads/j2objc-*.zip
$ export PATH=${PATH}:${HOME}/j2objc

注意:上面的导出命令需要添加到您的 ${HOME}/.bashrc 文件中,以便在您注销并重新登录时进行设置。

于 2013-10-10T17:34:51.133 回答
1

您评论您正在使用 XCode 3.2.6。目前,J2ObjC 似乎需要XCode 4+

参考:https ://code.google.com/p/j2objc/

于 2012-10-16T19:39:08.130 回答