1

我正在尝试将番石榴与 j2objc 一起使用,但出现错误:

j2objc TestJava.java 
translating TestJava.java
error: TestJava.java:1: The import com.google.common cannot be resolved
error: TestJava.java:10: Lists cannot be resolved
Translated 0 files: 2 errors, 0 warnings

在跑步的时候:

j2objc Test.java

其中Test.java包含:

import com.google.common.collect.Lists;
import java.util.ArrayList;

public class Test {
    public static void TestMethod() {
        ArrayList<String> objects = Lists.newArrayList();
        objects.add(0, "Hello world");
        System.out.println(objects);            
    }
}

我已经下载了最新版本 0.9.5 并将其添加到.profile

export PATH=$HOME/bin/j2objc-0.9.5:$PATH

为了使用番石榴,我还需要做什么?

谢谢!

4

1 回答 1

1

j2objc 翻译器使用 Java 编译器作为其前端,因此在翻译时需要使用与编译为 Java 类时相同的类路径和源路径。如果你运行“javac Test.java”,你会得到一个类似的错误,因为 guava jar 需要包含在类路径中。j2objc 发行版包含 lib/guava-jdk5.jar,因此运行“javac -classpath /lib/guava-jdk5.jar Test.java”,并在必要时修复 guava jar 目录的任何问题。一旦 javac 可以编译它,使用相同的参数将“j2objc”替换为“javac”,它应该可以正常翻译。

您不必总是首先使用 javac,但只要报告了翻译错误,就可以快速测试该问题是否与缺少源或类路径有关。

与 Java 的一个区别是,当您链接应用程序时,需要 -lguava 标志来包含该库。

于 2014-12-10T23:57:30.330 回答