【问题标题】:j2objc: command not foundj2objc:找不到命令
【发布时间】:2012-10-12 12:49:20
【问题描述】:

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

我该如何解决这个错误?

【问题讨论】:

  • 好像j2objc所在的文件夹不在你的路径中。
  • 你安装的是什么版本的Xcode?​​span>
  • 看起来错误是由clang引起的。您是否正确设置了 clang 并且可以从终端运行命令 clang?您是否尝试过以详细模式运行并查看它是否为您提供更多信息? j2objcc -v -o hello Hello.o

标签: java objective-c code-conversion


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

您评论说您使用的是 XCode 3.2.6。目前,J2ObjC 似乎需要 XCode 4+

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-01
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多