問題タブ [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.

0 投票する
1 に答える
446 参照

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 を実行するとこのエラーがスローされるのはなぜですか?

0 投票する
1 に答える
339 参照

java - Vavrを使用してこれを適切に実装するには?

このコードを機能的な方法で適切に記述する方法について、アドバイスをお願いします。

計算は簡単です:

の場合otherMethod、これが私の最初のアプローチでした:

しかし、最初のバージョンと比較して、コードが思ったほど読みにくくなっていると感じます (doubleflatMapを使用すると、一目でわかりにくくなります。なぜそこにあるのか)。

私はこの他のものを試しました。これにより、講義が改善されます。

はるかに読みやすいですが、この場合、For 内包表記を正しく使用していないと思います。

この場合のおすすめは?vavr の API を正しく使用していますか?

ありがとう