Gradle:无法创建FileHasher类型的服务

时间:2017-07-18 22:12:30

标签: gradle

我正在使用Gradle构建一个java项目。 当我运行任何任务(组装,测试)时。 我随机得到一个错误:

Could not create service of type FileHasher using 
GradleUserHomeScopeServices.createCachingFileHasher()

之前有没有人遇到过同样的问题?

Gradle V:3.5

java 8

我正在使用java插件。

谢谢,

13 个答案:

答案 0 :(得分:18)

在您的终端中键入:

./gradlew build

结果将是:

FAILURE: Build failed with an exception.

* What went wrong:
Could not create service of type FileHasher using GradleUserHomeScopeServices.createCachingFileHasher().
> Timeout waiting to lock file hash cache (/Users/zra/.gradle/caches/4.1-rc-1/fileHashes). It is currently in use by another Gradle instance.
  Owner PID: 17571
  Our PID: 26055
  Owner Operation: 
  Our operation: 
  Lock file: /Users/xxx/.gradle/caches/4.1-rc-1/fileHashes/fileHashes.lock

现在做:

rm /Users/xxx/.gradle/caches/4.1-rc-1/fileHashes/fileHashes.lock

再次建造。

P.S用您用的任何用户名替换xxx。

答案 1 :(得分:13)

我面临着同样的问题,因为在构建过程中我不小心碰到了ctrl + z,然后错误与您相同。

我试图删除锁定文件,但无法解决问题。

然后我发现with open(file_name, 'r') as stream: size = os.stat(stream.fileno()).st_size with tqdm(total=size) as progress: wrapper = ProgressFileWrapper(stream, progress.update) data = yaml.load(wrapper, Loader=Loader) 和gradle相关的所有过程,然后全部ps aux | grep gradle。构建恢复正常。

答案 2 :(得分:4)

对我有用的是按照上述答案中的建议删除锁文件:const Search = ({ searchSuggestion }) => { const previousController = useRef(); const onkeychange = async (e) => { if (previousController.current) { previousController.current.abort(); } let string = e.target.value const controller = new AbortController() const signal = controller.signal previousController.current = controller; const suggest = await getSearchSuggestion({ string, signal, }) } return ( <input type="text" autoComplete="off" placeholder="Search" className="search" onChange={onkeychange} /> ) } ,并通过运行命令杀死IDLE进程

rm /Users/xxx/.gradle/caches/4.1-rc-1/fileHashes/fileHashes.lock

它会生成状态为

的gradle进程列表
./gradlew --status

然后通过 PID STATUS INFO 23580 IDLE 5.2.1 23860 IDLE 5.2.1 19058 STOPPED (stop command received) 杀死其中一个空闲进程,然后再次运行gradle构建。

答案 3 :(得分:4)

一个简单的原因是gradle守护进程没有使用相同的环境变量启动。 更改gradle用户的主页时,我遇到了同样的问题。

只需停止守护程序:

gradle --stop

答案 4 :(得分:1)

使用以下命令更改.gradle/的所有权:

sudo chown -R <USERNAME> .gradle/ 

答案 5 :(得分:0)

这对我有用:

  1. 关闭防病毒文件保护

  2. 使缓存无效/重新启动

  3. 运行应用

答案 6 :(得分:0)

如果操作系统是Windows。 试试这个:gradlew build 查找de PID过程

enter image description here

在CMD中执行此命令

TASKKILL /F /PID  #PID

答案 7 :(得分:0)

几天前对我来说这是同样的问题,现在只有您或用户正在阅读此解决方案。

  1. 卸载完整的android studio(表示“从控制面板卸载后,删除Android Studio的文件夹”) 要删除的文件夹:

    C:\ Program Files-> Android, C:\ Users {用户文件夹名称}-> .android&.gradle和{与Android Studio相关的其他文件夹}

  2. 重新安装.exe,并确保您的PC已以适当的速度连接到Internet。

  3. 按照该说明下载所有SDK文件,并仅在Android Studio中继续下载。 [请不要从其他来源下载,否则会显示错误,请小心]

  4. 单击新项目,然后选择空项目,然后输入名称并单击完成。

您将重定向到另一个窗口,然后开始的主要事情是安装GRADLE,因此,您应该具有很高的Internet连接性,它将自动下载,并且现在可以开始使用了。

答案 8 :(得分:0)

我无法在其他地方找到此信息,以防万一它有助于某人:

在ChromeOS(在Chromebook上)上运行Android Studio时,我遇到了同样的问题。

我已经与Linux共享了一个Google Drive文件夹(通过选择一个文件夹,右键单击并选择与Linux共享),并在那里创建了我的项目。构建因此错误而失败,删除锁定文件对我没有任何帮助。

通过在“ Linux文件夹”下重新创建项目,为我解决了问题。

答案 9 :(得分:0)

我遇到了同样的问题,解决方案是使用正确的用户登录,然后运行gradle。我是用没有权限运行任务的用户登录的。

答案 10 :(得分:0)

我刚刚将一个项目从Download文件夹(在Mac上)移动到了另一个项目

答案 11 :(得分:0)

就我而言,我将整个项目保存在由 Google Drive Stream 管理的文件夹中。由于这是一个非常初级的文件系统,Android Studio 或 Gradle(我不知道是哪个)试图在 FS 上执行 Google Drive Stream 不允许的操作。

我只是将项目移到我的本地驱动器上并修复了它!

答案 12 :(得分:-1)

就我而言,最简单的解决方案就是运行

在Linux的情况下

sudo ./gradlew bundleRelease

如果 windows 则使用具有最高权限的用户登录。

因为权限不足导致出现这个错误