您好我试图将java项目转换为objc。但是,当我尝试这样做时,仍然会有一些小问题。
错误:包com.zzz.yyy.xxx不存在 import com.zzz.yyy.xxx.Test;
e.g:
错误:包com.google.gson不存在导入 com.google.gson.Gson;
错误:包com.google.gson.stream不存在导入com.google.gson.stream.JsonReader;
我们可以使用-classpath来满足jar文件。我们如何迎合这些包裹?
答案 0 :(得分:1)
就像Java一样,应用程序执行时,应用程序从其他库引用的代码需要可用,这些库引用的代码也是如此。对于j2objc,这意味着您的代码所依赖的所有库也必须转换为Objective C并包含在您的iOS应用程序中。 -classpath应该只保存具有翻译的jar(例如j2objc发行版中包含的那些,如JUnit和Guava),或者稍后会翻译。
对于像Gson这样的外部库,您需要下载其source code或带有源的jar文件,并将该jar文件或源的根目录添加到-sourcepath。但它仍然需要翻译。许多开发人员发现使用javac更容易构建一个-sourcepath参数而不依赖于类路径,然后更改" javac"到" j2objc"并添加任何特定于j2objc的标志(这就是两个编译器共享许多标志的原因)。
如果您在命令行上构建,j2objc' s --build-closure标志将转换您列出的源,然后(如javac)编译它在指定源路径上找到的所有引用源。这样做的好处是只编译应用程序所需的实际代码,而不是整个库。但是,像Xcode这样的构建工具在使用此标志(以及javac的行为)方面存在问题,因为无法从其输入列表构建规则输出文件列表。
如果您的所有应用程序需要解析基本的Json,您可以使用内置于j2objc的JRE仿真中的org.json package。它与Android上的代码相同,因此它是跨平台的。但许多已发布的应用程序在iOS上使用Gson,因此不应该成为阻止程序。