問題タブ [vavr]
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.
java - テストに合格しても、JSON 検証が実行時に失敗する
受信ペイロードを独自のスキーマと照合するために、一般的な JSON スキーマ ライブラリであるjson-schema-validatorを使用しています。
以下は私の悲しみの要約です。
ここまでは問題ありません。指定した場所にスキーマ ファイルが見つかり、schemaNode が準備されます。
着信 JSONString (より明確にはペイロード) が与えられた場合、以前にロードしたスキーマに対してその正確性を確認する方法は次のとおりです。
この関数は、次のように呼び出されます。
build.gradleファイルの関連部分:
IntelliJ IDEA 内から実行すると、これは完全に正常に機能します(すべてのテストケースを含む) 。ただし、JAR をビルドしてコマンド ラインから実行すると、非常に紛らわしい例外がスローされます。
JVM (ReportByTeamCriteriaSchemaChecker.java:59) によって攻撃的であることが判明したソース行は、前述の関数呼び出しに対応します。
schema.validate(jsonNode)
私は vavr を使用しているため、最初は vavr と json-schema-validator と Jackson が一緒にいるのが不快ではないかと疑っていましたが、vavr の Try を使用していなくても実行時に例外がスローされることを確認しました。
StackOverflow でこの会話を参照しましたが、ほとんど役に立ちません。
私はJDK 1.9を使用しています:
JSON Validation に精通している誰かが、私を正しい方向に向けてくれますか?
更新:
実験として、以下を依存関係に追加しました。
この場合、コマンド ラインから JAR を実行すると、エラー メッセージがまったく逆になります。
どちらかといえば、私はもっと混乱しています!:-) IntelliJ 内からは問題なく実行できるのに、コマンド ラインから実行可能 JAR を実行するとこのエラーがスローされるのはなぜですか?
java - Vavrを使用してこれを適切に実装するには?
このコードを機能的な方法で適切に記述する方法について、アドバイスをお願いします。
計算は簡単です:
の場合otherMethod
、これが私の最初のアプローチでした:
しかし、最初のバージョンと比較して、コードが思ったほど読みにくくなっていると感じます (doubleflatMap
を使用すると、一目でわかりにくくなります。なぜそこにあるのか)。
私はこの他のものを試しました。これにより、講義が改善されます。
はるかに読みやすいですが、この場合、For 内包表記を正しく使用していないと思います。
この場合のおすすめは?vavr の API を正しく使用していますか?
ありがとう