如何将整个文件夹或包从 Java 翻译成 Objective-C?
How to translate an entire folder or package from Java to Objective-C?
我以前使用过 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 page or elsewhere how I can translate an entire folder of Java files rather than just a single Java file using the j2obc executable. The only example provided in the Getting Started 页面上并不清楚是要翻译一个没有依赖关系的 Java 文件还是在其他地方导入如下:
$ ./j2objc Hello.java
假设我有一个名为 input
的文件夹,其中包含我的 com
包,其中包含所有子包和 Java 个我要翻译的文件?
如果 run.sh
没有更好的内置方法,您可以使用 find
的 -exec
标志:
find <path to input folder> -type f -exec --preservedirs ./run.sh {} \;
或者,您可以使用 xargs
以同一类型处理多个文件:
find <path to input folder> -type f | xargs ./run.sh --preservedirs
(如果您的目录中有非 Java 文件,您可能还需要将 -name "*.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
我以前使用过 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 page or elsewhere how I can translate an entire folder of Java files rather than just a single Java file using the j2obc executable. The only example provided in the Getting Started 页面上并不清楚是要翻译一个没有依赖关系的 Java 文件还是在其他地方导入如下:
$ ./j2objc Hello.java
假设我有一个名为 input
的文件夹,其中包含我的 com
包,其中包含所有子包和 Java 个我要翻译的文件?
如果 run.sh
没有更好的内置方法,您可以使用 find
的 -exec
标志:
find <path to input folder> -type f -exec --preservedirs ./run.sh {} \;
或者,您可以使用 xargs
以同一类型处理多个文件:
find <path to input folder> -type f | xargs ./run.sh --preservedirs
(如果您的目录中有非 Java 文件,您可能还需要将 -name "*.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