我之前使用过 Google 的 Java 到 Objective-C (J2ObjC) 转换器的旧版本(即版本 0.5.2),并且可以直接将整个 Java 文件文件夹转换为等效的 Objective-C 文件(和以保留这样做的目录结构)。我只需要运行以下 shell 可执行文件:
$ ./run.sh —-preservedirs <path to input folder>
我刚刚下载了最新版本的 J2ObjC(即版本 0.9.1),从 Getting Started 中看不清楚页面或其他地方如何使用 j2obc 翻译整个文件夹的 Java 文件,而不仅仅是单个 Java 文件可执行。 Getting Started 中提供的唯一示例页面是翻译一个没有依赖项或导入其他地方的单个 Java 文件,如下所示:
$ ./j2objc Hello.java
假设我有一个名为 input
的文件夹,其中包含我的 com
包,其中包含所有子-我要翻译的包和 Java 文件?
最佳答案
为了构建整个项目,我将源代码根目录添加到 -sourcepath,然后使用 find 命令查找所有 Java 源代码。例如,构建 Square.com 的 Dagger 库:
$ export J2OBJC=~/j2objc # change to wherever your distribution is
$ cd ~/src/dagger/core
$ $J2OBJC/j2objc -d build_output -sourcepath src/main/java \
-classpath $J2OBJC/lib/javax-inject.jar \
`find src/main/java -name '*.java'`
所有生成的 .h 和 .m 文件现在都在 build_output 目录中,根据它们的包在子目录中(就像 javac 那样)。要将所有 .m 文件编译成静态库,我使用:
$ cd build_output
$ j2objcc -c -I. `find . -name '*.m'`
$ libtool -static -o libdagger.a *.o
关于java - 如何将整个文件夹或包从 Java 转换为 Objective-C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29365645/