JAX RS APIにswagger-coreを使用しようとしていますが、openapi.yamlファイル(私の場合はhttp:// localhost:8080 / api / openapi.yaml)にアクセスしようとすると、次のエラーが発生します。
java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;
API自体は期待どおりに機能しています。 私は何かが足りないのですか、それともこれはバグですか?
テクノロジー
JEE 8
Glassfish 5
JAX-RS 2.26
Swagger-jaxrs2 2.0.0-rc4
スタックトレース
stacktrace.txt
POM.xml
pom.txt
web.xml
web.txt
私はついに解決策を見つけました。
Glassfishには、Swaggerと互換性のない独自のGuavaバージョンがあります。
それを修正するには:
glassfish-web.xmlを作成します
そして<class-loader delegate="false"/>
追加します
@ deny99何を追加しますか? この問題も見て...
変。 xmlコードを追加するのを忘れたか、削除されたようです。
Glassfishxmlには次のオプションが含まれている必要があります。
<glassfish-web-app>
<class-loader delegate="false"/>
</glassfish-web-app>
ジャージ付きのスプリングブーツを使用しています。
最新バージョンのグアバでも同じエラーが発生しました。
古いバージョンが明らかにクラスパスに追加されていないことがわかりました。
だから私はグアバの複数のバージョンを試しました。 そして、機能したバージョンはcom.google.guava:guava:24.1-jre
( <= 24.1-jre
)でした。
最も参考になるコメント
変。 xmlコードを追加するのを忘れたか、削除されたようです。
Glassfishxmlには次のオプションが含まれている必要があります。
<glassfish-web-app> <class-loader delegate="false"/> </glassfish-web-app>