我在Centos 7终端中使用了gradle build命令,得到了输出:
FAILURE: Build failed with an exception.
* What went wrong:
Could not create service of type InitScriptHandler using BuildScopeServices.createInitScriptHandler().
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
答案 0 :(得分:29)
尝试将GRADLE_USER_HOME
变量设置为您具有有效访问权限的文件夹。然后这个错误就会消失。
例如:我在新的从机上运行gradle clean
命令时遇到了同样的问题。
我的Gradle版本是2.3。
使用--stacktrace,我开始知道它正在尝试创建.gradle
文件夹来存储Gradle的缓存数据(当我调用Gradle在奴隶上运行清理任务时)它正在尝试在 / some / location / where / gradle / exists 或某些/ path / location / xxx / yyy下创建该文件夹,其中在从属计算机上运行Gradle的用户没有有效访问权限写(创建文件夹/文件)。
即。我曾经从Jenkins机器连接到奴隶的用户在默认位置没有任何对touch
/ mkdir
的写入权限(Gradle认为,我应该创建.gradle文件夹)这里)。
为了解决这个问题,我在slave的“环境变量”部分添加了上面的GRADLE_USER_HOME
变量。现在,因为我在我的主目录中有有效访问权限,所以我很好。
环境:
GRADLE_USER_HOME=~/gradle_2_3_cache/.gradle
解决了这个问题。
您也可以将其设置为〜/ .gradle。但我将它设置在我的~
主目录(gradle_2_3_cache)中的自定义文件夹下。这将有助于我,如果我有另一个奴隶在同一个奴隶机器上运行,但对于ex 2.5等版本有不同的Gradle版本,如果我想在单独的文件夹中使用.gradle
缓存2.3和2.5 / x版本。
答案 1 :(得分:14)
对我来说,杀死Gradle守护进程(gradle --stop
)确实帮助并解决了这个问题。
答案 2 :(得分:7)
通过简单地使用“sudo”并提供访问gradle以创建文件夹和写入缓存来解决问题。使用:
sudo ./gradlew
答案 3 :(得分:6)
我遇到了同样的问题。 对我来说,如果你不能删除尝试重命名,我排除.gradle文件夹后就可以了。
答案 4 :(得分:5)
如果你使用wrapper gradlew,在root make目录.gradle_new
mkdir .gradle_new
chmod -R 777 .gradle_new
并使用参数运行gradlew:
--project-cache-dir .gradle_new
答案 5 :(得分:5)
如果您刚刚更新了JDK版本,并且在项目中设置了Gradle包装器,则可能需要仔细检查包装器版本是否支持新的JDK。如果没有,请考虑从项目(gradlew
,gradlew.bat
和gradle/wrapper/*
)中删除与包装器相关的文件,然后使用Gradle CLI重新生成它们,如下所示:
gradle wrapper --gradle-version <new-version-number>
例如gradle wrapper --gradle-version 4.10.2
这当然假设您的Gradle安装是最新的。如果没有,您将要先对其进行更新。
答案 6 :(得分:2)
权限问题。这为我解决了问题:
sudo chown -R $USER dir
答案 7 :(得分:1)
这是一个权限问题。
做一个
gradle wrapper --stacktrace
你应该看到这样的东西
创建目录“ / home / cloud_user / my-project / gradle / wrapper”时,无法创建父目录“ / home / cloud_user / my-project / gradle”
用户cloud_user对目录没有权限
使cloud_user成为文件夹的所有者
sudo chown -R cloud_user:cloud_user /home/cloud_user/my-project/
答案 8 :(得分:1)
答案 9 :(得分:1)
您只需要在超级用户(sudo ....)下运行它,它对我有用
答案 10 :(得分:1)
重启机器即可解决问题。
答案 11 :(得分:0)
对我来说,这与Java版本有关。我安装了Java 10,并将其作为系统上的默认Java。设置指向Java 8的JAVA_HOME就足以构建项目(graphql-spring-boot)。
答案 12 :(得分:0)
我遇到了同样的错误,使用正确版本的Java / JDK消除了该错误。我试图使用Java 11 JDK构建Java 8项目。检查您使用的Java JDK版本。
要并行开发具有不同Java版本的项目,我现在使用jEnv来管理不同的JDK版本:http://www.jenv.be/
答案 13 :(得分:0)
如果运行Docker-in-Docker并将项目目录从Docker主机直接安装到Docker容器:
-v ${PWD}:/path_to_project -w /path_to_project
所有者不同,并且Docker容器用户( gradle 或 root )无法覆盖/删除./buildSrc/build
或./build/
>
其中一项修复-将容器内的源复制到临时目录并在其中建立。
这样的东西(首先安装到project
,然后复制到project-copy
以与主机系统实际文件“分离”并在副本中运行构建):
docker run -v "${PWD}":/home/gradle/project -w /home/gradle/project-copy \
--rm \
--entrypoint sh \
gradle:5.5.1-jdk11 \
-- -c "cp -r -T /home/gradle/project ./ && ./gradlew build"
答案 14 :(得分:0)
当尝试构建在VM中作为只读文件系统挂载的项目时,遇到了此异常。该项目设置了自己的gradle缓存,因此更改GRADLE_USER_HOME
不起作用。我不得不将文件系统更改为可读写。
答案 15 :(得分:0)
就我而言,我对私有Maven存储库的凭据不正确。 JIdea
不会显示内部异常,但是运行gradle build
会立即发现问题所在。
答案 16 :(得分:0)
供将来参考。 我有同样的问题,问题是防病毒软件阻止了 OpenJdk平台二进制文件和 java.exe ,导致android工作室无法修改文件
答案 17 :(得分:0)
我在Eclipse中使用了Gradle项目,Eclipse的Gradle给出了该错误。当我安装NetBeans及其Gradle插件时,问题消失了,项目正在顺利进行。解决该错误的另一种方法是使用命令行./gradlew,项目也已成功构建。
看来Eclipse的时代已经过去,他们似乎无法跟上进度。
答案 18 :(得分:0)
如果您同时在不同的终端上运行Gradle命令,则会发生这种情况-我假设Gradle在运行时会以某种方式锁定〜/ .gradle,以防止出现任何问题。
答案 19 :(得分:0)
当使用Java 14(openjdk)作为我的默认Java实现运行gradle时,我遇到了相同的错误。将默认Java设置回Java 8解决了该问题
sudo update-alternatives --auto java
答案 20 :(得分:0)
在IntelliJ Idea中运行代码时出现此错误,并且
gradle --stop
真的没有帮助,因为它说“没有Gradle守护程序正在运行。”
但是简单地杀死所有gradle进程有帮助:
ps aux | grep gradle
kill -9 $PID
答案 21 :(得分:0)
只需在命令中运行(taskkill / im java.exe / f)
答案 22 :(得分:0)
如果有人还在为此苦苦挣扎,我的问题是由 Microsoft 因 Controlled Folder Access
安全限制而阻止 Java 运行造成的。
我没有收到弹出通知,因为我的电脑设置为请勿打扰模式。一旦我允许访问,Gradle 运行良好。
答案 23 :(得分:0)
在我的情况下,错误是不同的,但我到了这里,我的错误是:
Could not create service of type ExecutionHistoryStore using ExecutionGradleServices.createExecutionHistoryStore().
> Timeout waiting to lock execution history cache (/Volumes/Extreme SSD/FlutterProject/test/android/.gradle/6.7/executionHistory). It is currently in use by another Gradle instance.
Owner PID: unknown
Our PID: 94001
Owner Operation: unknown
Our operation:
Lock file: /Volumes/Extreme SSD/FlutterProject/test/android/.gradle/6.7/executionHistory/executionHistory.lock
当您尝试从两个不同的终端运行 flutter run
时会发生这种情况。
所以我通过从我首先使用的活动终端执行 cd <projectPath> && flutter run
来解决它。
基本上,在执行一些 Gradle 命令时,在这种情况下构建一个 android 文件,终端会锁定一些 Gradle PID,所以你要么停止它们,要么只是简单地使用该终端。
答案 24 :(得分:0)