【问题标题】:Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory()无法使用 BuildScopeServices.createScriptPluginFactory() 创建 ScriptPluginFactory 类型的服务
【发布时间】:2018-11-13 00:54:16
【问题描述】:

我正在使用 IntelliJ,并且能够通过 GUI 构建和运行我的 Gradle 项目,方法是按下播放按钮,然后从终端运行此命令

./gradlew --stacktrace deploy

产生这个控制台输出,构建失败:

FAILURE: Build failed with an exception.

* What went wrong:
Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
> Could not create service of type PluginResolutionStrategyInternal using BuildScopeServices.createPluginResolutionStrategy().

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.internal.service.ServiceCreationException: Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:816)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:767)
        at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.java:571)
        at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:628)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:780)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:766)
        at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.java:571)
        at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:628)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:780)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:766)
        at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.java:571)
        at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:628)
        at org.gradle.internal.service.DefaultServiceRegistry.find(DefaultServiceRegistry.java:295)
        at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:284)
        at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:279)
        at org.gradle.initialization.DefaultGradleLauncherFactory.doNewInstance(DefaultGradleLauncherFactory.java:179)
        at org.gradle.initialization.DefaultGradleLauncherFactory.newInstance(DefaultGradleLauncherFactory.java:108)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:40)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
        at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:61)
        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
        at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
        at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
        at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
        at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
        at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.internal.service.ServiceCreationException: Could not create service of type PluginResolutionStrategyInternal using BuildScopeServices.createPluginResolutionStrategy().
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:816)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:767)
        at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.java:571)
        at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:628)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.assembleParameters(DefaultServiceRegistry.java:780)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryService.create(DefaultServiceRegistry.java:766)
        at org.gradle.internal.service.DefaultServiceRegistry$ManagedObjectServiceProvider.getInstance(DefaultServiceRegistry.java:571)
        at org.gradle.internal.service.DefaultServiceRegistry$SingletonService.get(DefaultServiceRegistry.java:628)
        at org.gradle.internal.service.DefaultServiceRegistry.find(DefaultServiceRegistry.java:295)
        at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:284)
        at org.gradle.internal.service.DefaultServiceRegistry.get(DefaultServiceRegistry.java:279)
        at org.gradle.internal.service.scopes.BuildScopeServices.defaultScriptPluginFactory(BuildScopeServices.java:301)
        at org.gradle.internal.service.scopes.BuildScopeServices.createScriptPluginFactory(BuildScopeServices.java:293)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:814)
        ... 61 more
Caused by: org.gradle.api.GradleException: Could not generate a proxy class for class org.gradle.plugin.management.internal.DefaultPluginResolutionStrategy.
        at org.gradle.api.internal.AbstractClassGenerator.generateUnderLock(AbstractClassGenerator.java:228)
        at org.gradle.api.internal.AbstractClassGenerator.generate(AbstractClassGenerator.java:80)
        at org.gradle.api.internal.ClassGeneratorBackedInstantiator.newInstance(ClassGeneratorBackedInstantiator.java:36)
        at org.gradle.plugin.internal.PluginUsePluginServiceRegistry$BuildScopeServices.createPluginResolutionStrategy(PluginUsePluginServiceRegistry.java:106)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35)
        at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:814)
        ... 79 more
Caused by: java.lang.NoSuchMethodError: sun.misc.Unsafe.defineClass(Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class;
        at org.gradle.internal.classloader.ClassLoaderUtils.define(ClassLoaderUtils.java:104)
        at org.gradle.model.internal.asm.AsmClassGenerator.define(AsmClassGenerator.java:58)
        at org.gradle.model.internal.asm.AsmClassGenerator.define(AsmClassGenerator.java:54)
        at org.gradle.api.internal.AsmBackedClassGenerator$ClassBuilderImpl.generate(AsmBackedClassGenerator.java:967)
        at org.gradle.api.internal.AbstractClassGenerator.generateUnderLock(AbstractClassGenerator.java:226)
        ... 88 more

【问题讨论】:

标签: gradle


【解决方案1】:

工作,正在使用 Java 11,切换到 Java 8

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
./gradlew --stacktrace deploy

【讨论】:

  • 如果/usr/libexec/java_home 不存在怎么办?
  • 也许 Android 工作室有它使用的 Java 内部版本? libexec不是所有Java版本都存放的地方吗?
  • 如果是,它将与系统包相关联,而不是与 Android Studio 本身相关联。它显然不是来自 Java 本身,或者它可能已经存在。我不知道。全部。这些版本实际上是单独存储在其他地方的,所以 libexec 可能是一个抽象层(我认为)
【解决方案2】:

问题确实来自 Java 11,但与升级到 Java 10 后的版本名称问题类似,可以通过升级 Gradle 来解决该问题。 Gradle 5.5 中不存在该问题,但我不确定哪个版本最早支持它。 (在撰写本文时,5.5 是 Gradle 的最新版本)

如果您使用的是每个项目的 Gradle 包装器(带有 gradle/wrapper/gradle-wrapper.properties),您所要做的就是更改包含分发 URL 的行,并调整版本:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-bin.zip

【讨论】:

  • 刚刚在 JVM11 上运行 Gradle 4.7 时遇到了同样的问题。将 Gradle 升级到 5.2.1 足以消除错误。
【解决方案3】:

权限

我使用的是远程 Jenkins,堆栈跟踪的开始与此问题中的类似,但根本原因是未能创建 .gradle

堆栈跟踪显示的目录:

Caused by: org.gradle.api.UncheckedIOException: Failed to create parent directory '/var/lib/jenkins/jobs/APPNAME/workspace/COMPANY/Android/APPNAME/.gradle' when creating directory '/var/lib/jenkins/jobs/APPNAME/workspace/COMPANY/Android/APPNAME/.gradle/4.6/fileHashes'
at org.gradle.util.GFileUtils.mkdirs(GFileUtils.java:272)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:58)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:34)
at org.gradle.cache.internal.DefaultCacheFactory.doOpen(DefaultCacheFactory.java:92)
at org.gradle.cache.internal.DefaultCacheFactory.open(DefaultCacheFactory.java:66)
at org.gradle.cache.internal.DefaultCacheRepository$PersistentCacheBuilder.open(DefaultCacheRepository.java:124)
at org.gradle.api.internal.changedetection.state.CrossBuildFileHashCache.<init>(CrossBuildFileHashCache.java:41)
at org.gradle.internal.service.scopes.BuildSessionScopeServices.createCrossBuildFileHashCache(BuildSessionScopeServices.java:194)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35)
at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:855)  

我发现它试图构建的目录归 root 用户所有,但 Jenkins 使用 jenkins 用户运行。我通过chown将目录发送给jenkins 用户解决了这个问题。

【讨论】:

  • 谢谢,这也是我的问题。当我创建一个新的 Mac 用户时会发生这种情况,因为我现有的用户非常臃肿(因为 Google Chrome)。
【解决方案4】:

我通过删除解决了这个问题 .gradle/checksums/checksums.lock

以及所有 *.lock 文件:(

【讨论】:

  • +1:java 的奇迹.. 整个地方都有太多的魔法,大部分都有效,除非它不...
【解决方案5】:

在项目根目录中运行 find ./ -name "*.lock" -type f -delete

【讨论】:

    【解决方案6】:

    我在使用 Android Studiolibgdx 游戏库时遇到了这个问题...

    在我的情况下,我执行File &gt; Invalidate Caches / Restart... 并单击Invalidate and Restart 操作并解决...

    【讨论】:

      【解决方案7】:

      我也遇到过类似的情况。我所要做的就是在项目目录上运行chmod 777 .gradle/。您可能需要使用sudo

      【讨论】:

      • 答案是什么?这通常不是一个人应该做的事情,或者通常不应该做的事情。
      【解决方案8】:

      在我的例子中,我刚刚打开了 Android Studio 并打开了项目的文件夹,然后 Android Studio 自动更新了所有 Gradle 依赖项。我不使用 Android Studio 进行编码(我使用 VSC),但在此之后我能够运行该项目。

      【讨论】:

        【解决方案9】:

        在我的 IntelliJ 运行配置中,我刚刚忘记填充 Gradle Project 字段 - 填充后构建工作正常。

        【讨论】:

          【解决方案10】:

          在尝试构建 cordova 项目时遇到此错误

          cordova 运行 --emulator

          Checking Java JDK and Android SDK versions
          ANDROID_SDK_ROOT=/home/user/Android/Sdk (recommended setting)
          ANDROID_HOME=/home/user/Android/Sdk (DEPRECATED)
          Using Android SDK: /home/user/Android/Sdk
          
          FAILURE: Build failed with an exception.
          
          * What went wrong:
          Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
          > Could not create service of type PluginResolutionStrategyInternal using BuildScopeServices.createPluginResolutionStrategy().
          

          上述解决方案,但像这样对我有用 ubuntu 18.04.6、npm 7.24.1、cordova 10.0.0、java 8

          export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
          cordova run --emulator
          

          【讨论】:

            【解决方案11】:

            我正在使用 Gradle 4.3.1,当我在运行给定管道的地方运行 Jenkinsfile 管道 并发运行 时会出现此问题 parallel 在 N 上运行单个 Gradle 任务。 Gradle 项目)在stages 部分。

            stages 阶段script 部分中删除parallel 部分不会导致这个——或我在下面的帖子中列出的其他奇怪问题——或者——当你只是在管道运行时运行(即非并发运行)管道。

            有关我的管道工作/遇到的问题的更多信息,请参见此处。

            Jenkins - java.lang.IllegalArgumentException: Last unit does not have enough valid bits & Gradle error: Task 'null' not found in root project

            【讨论】:

              【解决方案12】:
              • 在资源管理器中打开您的项目
              • 选择您的项目文件夹,然后转到属性
              • 然后转到安全性,然后授予访问或读取和写入权限
              • 基本上检查你的项目文件夹是否被锁定,如果锁定(写)然后授予写权限

              【讨论】:

                【解决方案13】:

                对我有用的解决方案(React native)。进入.gradle文件夹,在子目录中搜索所有.lock文件,将其全部删除。之后运行命令gradlew clean,然后使用命令react-native run-android 运行您的项目。

                我还下载了一个gradle6.6becasue,它已被某人从我的系统路径中删除。

                【讨论】:

                  【解决方案14】:

                  是的,通过在 preoject 目录中运行以下命令从 java 11 切换到较低版本时它可以工作...

                  导出 JAVA_HOME=/usr/libexec/java_home -v 1.8

                  【讨论】:

                  • 将选项传递给 Java 运行时应该使用 JAVA_OPTS 环境变量来完成,而不是使用 JAVA_HOME 一个。
                  • 也许应该是:export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) - 我不知道,我没有/usr/libexec/java_home
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-08-23
                  • 2019-06-24
                  • 1970-01-01
                  • 2020-10-15
                  • 1970-01-01
                  相关资源
                  最近更新 更多