前座
開発なのに低スペPCしかなく、AndroidStudioでコーディングなんてできないぜって人や、人から貰ったソースコードを簡単にビルドしたいなんてときにgradlew
コマンドでターミナル上からビルドすることはよくあるとおもう。
$ ./gradlew assembleDebug
問題
ところが、最近になって突然、以下のエラーが出るようになった。
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authentication Required"
認証付きプロキシを使って外部と接続してると、その認証がうまくいっていない。エラーの内容からすると、プロキシを通そうとしているんだけど、認証は通らないようだ。奇妙なことに、AndroidStudioではうまくビルドできている1。
解決
Java8のどこからかのバージョンからBasic認証が禁止されていたみたい2。そしてこれを無効化し、Basic認証を使えるようにするにはコマンドライン引数を渡してやればいいみたい。
gradlew
(Windowsの場合gradlew.bat
)を開き、以下を追加する。
DEFAULT_JVM_OPTS="-Djdk.http.auth.tunneling.disabledSchemes=\"\""
これで通った!!