问题标签 [j2objc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3359 浏览

ios - Swift 编译器错误 - 无法导入桥接头

我正在尝试为 iOS 集成Actor App。在编译时,我收到此错误:

在此处输入图像描述

我检查了路径,并且ActorClient-Bridging-Header.h存在那里。

我已经在Build Settings中设置了头文件的正确路径

在此处输入图像描述

这是文件夹结构:

在此处输入图像描述

此编译错误的原因可能是什么?

编辑 我尝试解决与此处提到的相同的问题:Swift Bridging Header import issue and no lucky。

我磁盘上实际路径的屏幕截图: .h 路径

0 投票
1 回答
98 浏览

j2objc - 使用 j2objc 在 java 中内联的接口参数

我的 Java 模型中有一个方法,调用如下:

我的问题是,在将我的模型转换为objective-c 后如何在 Swift 中使用它

有没有办法内联 JsonResponseHandler 或任何其他方式?

0 投票
1 回答
315 浏览

java - 转换为 Objective C 时出现 j2objc 错误

我需要将 Android 源代码转换为 Objective C

但它显示错误:

任何设置(JDK 8、Maven、SDK、Android Studio、Gradle、J2OBJC,...)

如何解决?

0 投票
1 回答
6876 浏览

ios - 使用 J2ObjC 和 GSON 库将 Swift 类序列化为 JSON

我对 iOS 很陌生,从 Android 开发开始。

我们有一个 Android 应用程序,它有几个库,我们使用 J2ObjC 将其转换为 Objective C。

我一直在逐渐带来图书馆,到目前为止,一切都很好。

但是,在翻译 Google 的 GSON 库后,我遇到了一个问题,如果我尝试使用翻译后的方法toJsonWithId,我会遇到问题:

我收到以下错误:

libc++abi.dylib:以 JavaLangAssertionError 类型的未捕获异常终止

它进一步表明:

由于未捕获的异常“JavaLangAssertionError”而终止应用程序,原因:“未知的 Java 类型编码”

我的 Swift 课程是:

如果我改为在我的 Swift 项目中使用 Objective C 类,请将其添加到桥接头并使用 Objective C 类,它可以正常工作。

我相信这是我的一个误解,但我找不到为什么这不起作用的答案。检查 J2ObjC 源代码显示当找不到类的类型时会引发错误。

如果有人可以帮助解释此问题的原因,将不胜感激。

谢谢!

0 投票
1 回答
351 浏览

serialization - j2objc 对象序列化——java.lang.NoSuchMethodException: writeReplace

更新- 您可以在此处找到一个示例项目来重新创建问题:https ://github.com/benf1977/j2objc-serialization-example/releases/tag/1.0

我正在尝试用 Java 序列化一个对象并将字节传递给我的 Objective-C 层以写入文件系统。我的相关Java代码是这样的:

我已经在 J​​ava 中对这个类进行了单元测试(我也有一个反序列化器)并且它通过了。在 Objective-C 中,我这样做:

例外是:

相关的跟踪是:

对可能发生的事情的想法?

0 投票
1 回答
212 浏览

java - j2objc 不尊重死代码报告

我试图让 j2objc 在 gradle 项目中的一些仅 java 的模块上运行。我正在使用 j2objc 的 gradle 插件,但我不认为这是任何问题的根源。该模块使用 XMLUnit 来检测输入文件中的差异。XMLUnit 包括一个org.xmlunit.builder.JaxbBuilder由于没有看到 j2objc 中省略的一些 javax 类而导致翻译失败的类,大概是因为它们无法翻译。无论如何,我的代码不使用JaxbBuilder该类,因此我创建了一个死代码报告来省略它。我知道我可以使用 proguard 来生成一个更完整的集合,但现在,我的重点只是防止尝试这个类,因为我仍在为这一切开发一个 gradle CI 管道。该报告的标题是dead_code.log仅包含以下行:

org.xmlunit.builder.JaxbBuilder

j2objc 插件配置指定为:

而且我可以在日志中看到死代码参数已添加到命令行,但在执行中我看到:

AnnotatedElement 类型的通用方法 getAnnotation(Class) 不适用于参数 (Class)。推断的类型 XmlRootElement 不是有界参数错误的有效替代品:org/xmlunit/builder/JaxbBuilder.java:103:XmlRootElement 无法解析为类型错误:org/xmlunit/builder/JaxbBuilder.java:106:方法来自 JaxbBuilder 类型的 createJAXBElement(Object) 指的是缺少的类型 JAXBElement 错误:org/xmlunit/builder/JaxbBuilder.java:108:来自类型 JaxbBuilder 的方法 createInferredJAXBElement(Object) 指的是缺少的类型 JAXBElement 错误:org/xmlunit/ builder/JaxbBuilder.java:117:JAXBException 无法解析为类型错误:org/xmlunit/builder/JaxbBuilder.java:117:PropertyException 无法解析为类型错误:org/xmlunit/builder/JaxbBuilder.java:118:

我解释为它试图处理JaxbBuilder课程。配置中有我遗漏的东西吗?

0 投票
2 回答
104 浏览

java - 使用 j2objc 使用公共而不是私有成员生成

我最近将 j2objc 从 0.9.4 更新到最新版本 (0.9.8.2.1)。以前的版本将所有成员都生成为公共成员,但从 0.9.6 开始,私有成员默认是隐藏的。由于某些原因,我必须访问其他类的一些私有成员。发行说明中有一个解决方案:

注意: --hide-private-members 现在是默认值,因此私有字段和方法在公共头文件中不再可见。如果这破坏了您的项目,请修复非法引用,使这些成员非私有(因为它们不是),或使用 --no-hide-private-members 标志。

我试图将此标志附加到我的项目中,但没有成功(我无法更改 java 代码)。我试过阅读j2objc --help,但没有提到这个标志。所以我想知道我在哪里设置了这个标志来像以前一样与所有公共成员一起构建项目?

我使用类似于此处描述的 makefile(在文档中)。这是它的一部分:

感谢您的任何帮助和建议。

0 投票
2 回答
153 浏览

j2objc - 创建 frege.jar 并包含中间 .java 文件(用于 J2ObjC)

有没有办法将 Frege 运行时和库编译为它们的 .java 中间体?我正在尝试通过 J2ObjC 将 Frege 用作 iOS 应用程序的一部分,它无法解析 .class 文件。

0 投票
1 回答
170 浏览

java - 使用 J2ObjC Gradle 插件排除测试

是否可以使用插件从 java-to-ObjcC 转换中排除测试类j2objc-gradle

0 投票
1 回答
327 浏览

java - J2ObjC:将 @Nullable 转换为 __nullable

我正在尝试将 Java 可空性注释转换为 Objective-C 以在 Swift 中获取 Optionals,但没有任何反应,方法的签名保持不变。

这是Java代码:

翻译时我得到:

代替:

我想要这个签名罪 Swift:

我做错了什么?

太感谢了。