技術関係

【Gradle】Could not create service of type FileHasher using BuildSessionServices.createFileHasher() と出てビルド出来ない時の対処法

いつものようにGradleでアプリを動かそうとビルドした時にエラーに遭遇。

Gradle could not start your build.
> Could not create service of type FileHasher using BuildSessionServices.createFileHasher().
   > Failed to ping owner of lock for file hash cache (/Users/my/application/.gradle/6.7.1/fileHashes) (lock id: -4974386487345919916, port: 61117)

こんな感じでビルドが失敗する。

違うエラーも出るときがある。

Gradle could not start your build.
> Could not create service of type ResourceSnapshotterCacheService using GradleUserHomeServices.createResourceSnapshotterCacheService().
   > Timeout waiting to lock file hash cache (/Users/XXXX/.gradle/caches/6.7.1/fileHashes). It is currently in use by another Gradle instance.
     Owner PID: 7159
     Our PID: 7163
     Owner Operation: 
     Our operation: 
     Lock file: /Users/XXXX/.gradle/caches/6.7.1/fileHashes/fileHashes.lock

 

色々調べてみて対処した結果が以下。

スポンサーリンク
スポンサーリンク

対処方法を探す

gradle のプロセスを切る

gradleのプロセスを確認する。

$ ./gradlew --status
PID STATUS   INFO
80536 IDLE     6.7.1

IDLEのプロセスをkillする

kill -9 80536

これで正しくプロセスが切れていれば起動出来るようになる。

が、2回目以降のビルドでまた同じエラーが出る。駄目っぽい。

また、

STOPPED (by user or operating system)と出て消えないこともあるので駄目っぽい。

fileHashes.lockを削除する

~/.gradle/caches/{version}/fileHashes/fileHashes.lock

というファイルが存在するのでそれを削除するといいと見たので削除する。

が、削除してもビルドできず。駄目っぽい。

解決策

gradleのフォルダを削除してみたらいけるようになった。

まずGradleのdeamonフォルダを削除してみる。

$ rm -rf ~/.gradle/deamon/

再度BootRunしてみると無事起動できる。

ひとまずこの対応でエラーが出ることはなくなった。

番外編:ファイヤーウォールが悪さをしているかも

もうひとつ別の観点から。
このエラーが出る際にはセキュリティソフトのファイヤーウォールがGradleの通信を遮断(?)している事も原因かもしれない。

ESET Endpoint Security を使っている場合

「ESET Endpoint Security」というソフトを使っている場合、ファイヤーウォールを無効化にしてみる。
すると、すんなり起動できたりする。

細かい通信設定でGradleの通信を許可すればファイヤーウォールを無効化しなくて済むが、応急措置として。

Gradle のプロセスをすべてkillする

プロセスのkillは前述してあるが、一応すべて killしてみる。

$ ./gradlew --status
   PID STATUS   INFO
  2626 BUSY     6.7.1
  2749 IDLE     6.7.1
  2622 STOPPED  (other compatible daemons were started and after being idle for 0 minutes and not recently used)
 44915 STOPPED  (by user or operating system)

 

GradleDaemonのプロセスをkill

$ pkill -f '.*GradleDaemon.*'

killされている。

$ ./gradlew --status
No Gradle daemons are running.
   PID STATUS   INFO
 44915 STOPPED  (by user or operating system)

環境

  • Gradle 6.7.1
  • IntelliJ IDEA 2021.1.1 (Community Edition)

参考

Gradle :Could not create service of type FileHasher / Anas K

【React Native】「Could not create service of type FileHasher using GradleUserHomeServices.createCachingFileHasher()」エラーの対処法 / 株式会社シーポイントラボ

How to clear gradle cache? / David T.

Stopped daemons never actually go away #1747

Kill all Gradle Daemons Regardless Version? / stack overflow

コメント

タイトルとURLをコピーしました