自分のmacOS SierraでEclipseのMarket PlaceからEclipse Tomcat Plugin 9.1.2をいれようとするとエラーが発生したのでその時のメモです。
根本的な解決は行えませんでしたが、一応JavaとEclipseを入れ直すことで解消しました。
元々の環境はEclipse Mars.2, jdk 1.8.0_51でした。
その時の備忘録です。
同じ問題にはまっている人が多そうなのでメモとして書いておきます。
一番お手軽な解決策はJavaとEclipseをほぼ完全消去
(ほぼ、というのは完全に消しされていないものがあるような気がするからです)した上で、
JavaとEclipseをいれなおせばOKです。
これは想像なのですが、おそらく
${JAVA_HOME}/jre/lib/security/cacerts
にあるJava CAがなぜか壊れていたのだと思います。
Stackoverflowで類似の質問がめちゃくちゃありましたがどれも解決に至らず。
以下長々とした記録です。
エラー発生
日本語
http://tomcatplugin.sf.net/update/site.xml のリポジトリーを読み取ることができません。 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
英語
Unable to read repository at http://tomcatplugin.sf.net/update/site.xml. sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
http://tomcatplugin.sf.net/update/site.xml のリポジトリーを読み取ることができません。
のエラーが出た
試したこと
「直接」から「ネイティブ」に変更
効果なし
Javaにサーバ証明書を入れる
効果なし
まずFirefoxなどでhttp://tomcatplugin.sf.net/update/site.xmlにアクセスします。
たぶんsource.forgenetに飛ばされます。
ブラウザで保護された通信から証明書を表示します。
GeoTrust Global CA 名前忘れたけどここに中間証明書 *.sourceforge.net
Firefoxならブラウザ上からかきだせます
知識不足でルートの方を追加すればいいのかルートじゃない方を追加すればいいのかわからず
結局全部入れました。
全部デスクトップに書き出します。
JAVA_HOMEが設定されていないと不便なので設定します
僕の場合はjdk.1.8.51でした。
ここはWindowsとだいぶ違うところです。/usr/libexec/java_homeというJavaのバージョンを管理してくれているツールがあります。
$ vi ~/.bashrc export JAVA_HOME=`/usr/libexec/java_home` $ bash $ echo ${JAVA_HOME} /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
そのあと
$ ls ${JAVA_HOME}/jre/lib/security/cacerts /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/security/cacerts
となっていることを確認して、
$ sudo keytool -import -trustcacerts -file ~/Desktop/GeoTrust\ Global\ CA.cer -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias ca -storepass "changeit" 証明書は、別名<geotrustglobalca>のキーストアにすでに存在します 追加しますか。[いいえ]: y 証明書がキーストアに追加されました
あれ?すでにあるんかい…と思いながら続行
ちなみにchangeitがデフォルトのキーストアのパスワードです。
ここでMarket Placeにつなぐも同様のエラー
$ sudo keytool -import -trustcacerts -file ~/Downloads/sourceforge.net.crt -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias sourceforge -storepass "changeit" この証明書を信頼しますか。 [いいえ]: y 証明書がキーストアに追加されました
ここでMarket Placeにつなぐも同様のエラー
よくわかってないので中間証明書も入れておきました
sudo keytool -import -trustcacerts -file ~/Downloads/GeoTrustSSLCA-G3.crt -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias geotrustsslca -storepass "changeit"
ここでMarket Placeにつなぐも同様のエラー
一応確認して見るも…ちゃんと登録されてる
$ keytool -v -list -keystore ${JAVA_HOME}/jre/lib/security/cacerts | less
eclipse.iniに設定を追加
-Djavax.net.ssl.trustStore=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit
2行を追加しました。
効果はありませんでした。
Eclipseのネットワーク設定をいじくる
効果なし
直接になっているものをマニュアルやネイティブに変える
以前SOCKSで似たような問題が出たが、消すことで解消したが、消せない
→これはproxy環境下の話で、現在のバージョンではsocksに情報を入力しなければいいそうな。
Eclipseの利用可能なサイトの一覧をいじくる
効果なし
前準備として一覧を消しておく。
$ /Applications/Eclipse.app/Contents/Eclipse/p2/org.eclipse.equinox.p2.repository rm -rf cache/*
Eclipseを立ち上げ直して
インストール/更新から
利用可能なサイト
http://tomcatplugin.sf.net/update/
を追加
これを選んで際ロード
→エラー
解決しないので最新版のEclipseを入れ直す
Eclipse MarsからEclipse neon 2に
→効果なし
たまにEclipseのコンソールに設定した覚えのないproxyの除外設定が出る。
効果なし
Macのネットワーク設定を見るとproxyがおかしい
システム環境設定 > ネットワーク > プロクシタブ > プロキシ設定を使用しないホストとドメイン
*.local, 169.254/16
と書かれているので消す。
これ自体は何の影響もなかった
これ自体はMacの不具合として書き込みが多数あった。
JavaとEclipseを完全消去して入れ直す。
治りました!!
Eclipseはデフォルトの状態なら$HOME/eclipseにあると思うのでフォルダごと削除
JavaについてはOracleの公式の説明があるんだけど、なんか足りない気がする…ので
http://www.toraneco.com/blog2/?p=1795
を参照。
$ sudo rm -rf /Library/Internet Plug-Ins/JavaAppletPlugin.plugin $ sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist Password: $ sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane $ sudo rm -rf /System/Library/Java/Support/CoreDeploy.bundle rm: cannot remove ‘/System/Library/Java/Support/CoreDeploy.bundle/Contents/Download Java Components.app/Contents/_CodeSignature/CodeResources’: Operation not permitted 以下opreration not permittedのエラーが続く... $ sudo rm -rf ~/Library/Preferences/com.apple.java.util.prefs.plist $ sudo rm -rf ~/Library/Preferences/com.apple.java.util.prefs.plist.lockfile $ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk
エラーでたけど気にしない・・・
最新のJDKを入れる(最新じゃなくて同じバージョンでもよかったかもしれない)
最新のEclispeをインストールし直す。
無事つなぐことができました。
もし根本的な理由がわかる人がいましたらお知らせいただけると幸いです。
参考
http://stackoverflow.com/questions/7625943/unable-to-read-repository-at-http-download-eclipse-org-releases-indigo
http://qiita.com/nenokido2000/items/b36b6e5f0854d7d63ba6
http://www.toraneco.com/blog2/?p=1795