【问题标题】:Gradle Error: String index out of range: 0Gradle 错误:字符串索引超出范围:0
【发布时间】:2016-08-03 07:57:26
【问题描述】:

尝试使用 Gradle 编译 Android 项目并收到一个奇怪的错误。 当我运行./gradlew tasks --stacktrace。尝试了干净的重建,repo的新克隆,不同的分支,同事都能够构建aok。

寻找要检查/尝试解决此问题的想法。

*更新:恢复到 Gradle 2.11 和 com.android.tools.build:gradle:2.2.0-alpha6 似乎已经解决了这个问题。 *

这是堆栈:

FAILURE: Build failed with an exception.

* What went wrong:
String index out of range: 0

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

* Exception is:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
        at org.gradle.internal.reflect.JavaReflectionUtil.toMethodName(JavaReflectionUtil.java:196)
        at org.gradle.internal.reflect.JavaReflectionUtil.writeablePropertyIfExists(JavaReflectionUtil.java:156)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader$CachingPropertyApplicator.configureProperty(ProjectPropertySettingBuildLoader.java:99)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader.addPropertiesToProject(ProjectPropertySettingBuildLoader.java:76)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader.setProjectProperties(ProjectPropertySettingBuildLoader.java:53)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader.load(ProjectPropertySettingBuildLoader.java:49)
        at org.gradle.initialization.NotifyingSettingsLoader.findAndLoadSettings(NotifyingSettingsLoader.java:35)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:118)
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        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:120)
        at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:40)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:237)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)

系统详情:

Gradle 2.14.1

构建时间:2016-07-18 06:38:37 UTC 修订:d9e2113d9fb05a5caabba61798bdb8dfdca83719

时髦:2.4.4 Ant:2015 年 6 月 29 日编译的 Apache Ant(TM) 版本 1.9.6 JVM:1.8.0_101(甲骨文公司 25.101-b13) 操作系统:Mac OS X 10.11.6 x86_64

【问题讨论】:

  • 您的应用程序中是否有方法get()is()set(...) gradle 想要通过删除bean 前缀“get”/“set”/“is 通过反射访问“?

标签: android gradle android-gradle-plugin


【解决方案1】:

合并冲突对我造成了这种影响。冲突发生在gradle.properties。像<<<<<<< HEAD 这样的行是我认为的原因。如果消息更具描述性,那将会很有帮助。

【讨论】:

  • 感谢您的回答。你现在有 11 个赞成票是有原因的。
  • 感谢您为解决这个问题节省了数小时的时间!
  • 感谢您为解决这个问题节省了数小时的时间! [2]
【解决方案2】:

= 是键值分隔符。如果要拆分属性文件中的部分,可以使用注释:

foo.bar=foo
#=======
foo.baz=baz

更多信息请见:properties file format

【讨论】:

    【解决方案3】:

    我通过删除全局 gradle.properties 文件 ~/.gradle/gradle.properties 中的所有条目发现了问题

    所以认为我以前的文件中肯定有 gradle 不喜欢的东西。在复制和粘贴几个部分后,我发现这是罪魁祸首

    =======

    我一直在使用 ====== 来拆分我的 gradle 属性部分(我定义了开源和商业密钥/属性)。

    在 gradle 2.11 的先前版本中,这没问题并且编译良好,但在 2.14.1 上,您会收到神秘错误“字符串索引超出范围:0”。

    【讨论】:

      【解决方案4】:

      对我来说,问题是由于 gradle.properties 的 SVN 冲突引起的,如下所示: bin build.gradle gradle.properties gradle.properties.r91662 src 构建 build.num gradle.properties.mine gradle.properties.r91979 tmp

      有一次,我将 gradle.properties 设置为 svn 解析,gradle build 开始正常工作。

      【讨论】:

      • 谢谢你。当我读到你的评论时,我去检查了我的评论,结果是一样的。
      • Gradle 4.9 在这里,并尝试解决合并冲突。更好的错误消息,例如“Malformed gradle.properties 文件”,可以节省我 15 分钟的时间。
      【解决方案5】:

      这表示gradle.properties中有一些错误的值,请删除无效的条目。

      【讨论】:

        【解决方案6】:

        删除为我工作的~/.gradle/ dir,当我将我的android studio 更新为2.3.1 时,Gradle Exception:String index out of range:0

        【讨论】:

          【解决方案7】:

          检查您的settings.gradle,如果它在您的项目中包含任何已删除/不存在的模块。

          我在settings.gradle 文件中有一个已删除 模块仍然躺在。删除它解决了我的问题。

          【讨论】:

            【解决方案8】:

            检查您的文件,这可能是您有未解决的合并冲突,这在您的代码中添加了不需要的额外字符,例如

            删除 ~/.gradle/ 目录

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-01-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-11-14
              • 1970-01-01
              • 2013-09-25
              • 2015-01-19
              相关资源
              最近更新 更多