java - 如何将整个文件夹或包从 Java 转换为 Objective-C?

标签 java objective-c j2objc

我之前使用过 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/

相关文章:

java - Jackson 反序列化有界类型

java - SLF4J 自定义绑定(bind)不起作用

java - 访问在 Swift 中使用 J2objc 翻译的枚举

java - maven- assembly-plugin 不打包依赖项

ios - 在 objective-c 模块中使用 swift 时无法构建 Objective-C 模块

objective-c - 如何防止其他应用程序更改我的 NSWindow 框架

objective-c - 用不同线宽的部分绘制连续的CGPath

ios - 为 iOS 或替代品编译 Apache 通用数学

java - 如何使用j2objc在objectiveC ios项目中使用.jar库?

java - .NET 和 Java 产生不同的签名