はじめに
spring-social-twitterでTwitterログインを実装していて、サンプル紹介してくれているブログがあったので、真似して作っているところで詰まりました。
そもそもspring-social-twitter + Spring Boot ログインの例が全然見つからず、
このサンプルに行き着くまでも何個か試してうまく行かなかったので、サンプルがおかしいのではないかと思っていたのですが
数時間の格闘の末、解決できたのでその過程を書きます。
エラーとの格闘

スクリーンショットで赤くなっている、ProviderSignInUtils
でエラーが発生しています。
エラーメッセージは、
[Java] The constructor ProviderSignInUtils(ConnectionFactoryLocator, UsersConnectionRepository) is undefined
と出力されていてどうやら定義されていないらしい。import間違って正しいライブラリー参照できてないのか?とか、
そもそも、そんなコンストラクター定義されていないんじゃないのか?など調べました。
サンプルと見比べてどうやらimportは正しい、リファレンスにも同じコンストラクターは定義されている。
Constructor and Description |
---|
ProviderSignInUtils(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository connectionRepository) |
あるものが使えない!意味がわからない。。。。。 エディターが悪いのか!と思いEclipseで試したり。
色々足掻いている中で、コンストラクターで右クリックすると定義元にいけることに気づき、みてみると・・・
エラーの原因

ProviderSignInUtils
の参照元が若干違う!
エラーが発生している参照元が画面左です。たしかに定義されていないので、エディターは間違ってなかったですね。(そうだと思っていましたが・・・)
バージョンを見てみるとサンプルは2014、自分が実装しているのは2015年のを使っているようでした。
spring-social-twitterはMavenで定義していて、リリース1.1.2を使用しています。
<dependency> <groupId>org.springframework.social</groupId> <artifactId>spring-social-twitter</artifactId> <version>1.1.2.RELEASE</version> </dependency>
サンプルgradleを使用しているようで以下のようになっています。
gradleってリリース書かないんですね。バージョンわかりません。
dependencies { compile('org.springframework.boot:spring-boot-starter-social-twitter') }
とりあえず最新版にしようと思うのですが、
spring-social-twitterの公式ページを見ても記載が見つからないし、
よく使うMVNRepositoryというサイトでも1.1.2が最新版で見つからずあと一歩のところですが、
2時になり平日としては明日のことを考えるとそろそろ限界なので中断しました。
ちなみに、spring-social-twitterの公式ページには1.1.0が最新版と記載があります。
どういうこった!
問題解消!
翌日、仕事終わりにダメ元で調べてみると、なんと一発で最新リリースの記載があるサイトに辿りつけました! MVNRepositoryで前日と同じサイトなのですが、
”spring social twitter maven” というクエリで検索すると古いバージョンの記載しかないページが検索結果として表示されるのですが、
"spring boot social twitter maven"と boot というキーワードをいれることにより、最新のページが検索結果として表示されるようになりました!
Google検索を信用しきっていたので、まさか前者で表示されないサイトが後者で表示されるとは・・・
検索能力がものをいう時代とはこういうことですね。
まとめ
問題は寝るとなおる!すっきり!!