問題タブ [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.
ios - J2ObjC と GSON ライブラリを使用して Swift クラスを JSON にシリアライズする
私は iOS を初めて使用し、Android 開発から移行しました。
J2ObjC を使用して Objective C に変換するいくつかのライブラリを持つ Android アプリケーションがあります。
私は徐々にライブラリを引き継いでいますが、これまでのところとても良いです。
ただし、Google の GSON ライブラリを翻訳した後、翻訳されたメソッドtoJsonWithId
を使用しようとすると問題が発生するという問題があります。
次のエラーが表示されます。
libc++abi.dylib: タイプ JavaLangAssertionError のキャッチされない例外で終了します
さらに、次のことを示しています。
キャッチされない例外 'JavaLangAssertionError' が原因でアプリを終了しています。理由: 'unknown Java type encoding'
私のSwiftクラスは次のとおりです。
代わりに Swift プロジェクトで Objective C クラスを使用する場合は、それをブリッジング ヘッダーに追加し、Objective C クラスを使用すると問題なく動作します。
これは私の誤解だと思いますが、なぜこれが機能しないのかについての答えが見つかりません。J2ObjC ソース コードを確認すると、クラスの型が見つからない場合にエラーが発生することがわかります。
誰かがこの問題の理由を説明するのを助けることができれば、それはありがたいです.
ありがとう!
serialization - j2objc オブジェクトのシリアル化 -- java.lang.NoSuchMethodException: writeReplace
更新- 問題を再現するためのサンプル プロジェクトは、https ://github.com/benf1977/j2objc-serialization-example/releases/tag/1.0 にあります。
Java でオブジェクトをシリアル化し、そのバイトを Objective-C レイヤーに渡してファイルシステムに書き込もうとしています。関連する Java コードは次のとおりです。
このクラスを Java で単体テストしました (これにはデシリアライザーもあります)。合格しました。Objective-C では、次のようにしています。
例外は次のとおりです。
関連するトレースは次のとおりです。
何が起こっているのでしょうか?
java - j2objc がデッド コード レポートを尊重しない
私は、gradle プロジェクトのいくつかの Java のみのモジュールで j2objc を実行しようとしています。j2objc に gradle プラグインを使用していますが、それが問題の原因であるとは思いません。このモジュールは、XMLUnit を使用して入力ファイルの違いを検出します。XMLUnit にはorg.xmlunit.builder.JaxbBuilder
、おそらく変換に失敗したため、j2objc で省略されたいくつかの javax クラスが表示されないために、変換に失敗したクラスが含まれています。いずれにせよ、私のコードはクラスを使用していないJaxbBuilder
ので、デッド コード レポートを作成して省略しました。プロガードを使用してより完全なセットを生成できることはわかっていますが、現時点では、このすべての 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
これは、クラスを処理しようとしたことを意味すると解釈します。構成に欠けているものはありますか?
j2objc - frege.jar の作成と中間 .java ファイルの組み込み (J2ObjC で使用するため)
Frege ランタイムとライブラリを .java 中間体だけにコンパイルする方法はありますか? .class ファイルを解析できない J2ObjC 経由で iOS アプリの一部として Frege を使用しようとしています。
java - J2ObjC: @Nullable を __nullable に変換する
Java nullability アノテーションを Objective-C に変換して Swift で Optionals を取得しようとしていますが、何も起こりません。メソッドのシグネチャは同じままです。
Javaコードは次のとおりです。
翻訳すると、次のようになります。
それ以外の:
私はこの署名罪Swiftが欲しい:
私が間違っていることは何ですか?
どうもありがとう。