StackOverflowError:项目结构中的Android Studio中为null

时间:2017-07-20 08:49:42

标签: android-studio gradle android-gradle

自从我更新到Android Studio 2.3后,在某些情况下会出现IDE错误:例如,当我点击File->Project Structure时,尝试打开任何布局XML,甚至点击任意代码中的任意一点{ {1}}文件(这些文件至少在没有例外的情况下打开)。错误显示build.gradle,并且堆栈跟踪在所有情况下都相同:

StackOverflowError: null

...最后两行永远重复。

如何找到此问题的根源?

看起来在我的构建配置或Studio内部的某处有一个循环引用?但我无法手工找到任何东西。如果我至少知道堆栈跟踪中提到的模式或引用是什么会有所帮助。

我已经尝试过的事情:

  • 无效缓存&重新启动
  • 删除项目目录中的null java.lang.StackOverflowError at java.util.regex.Pattern.sequence(Pattern.java:2079) at java.util.regex.Pattern.expr(Pattern.java:1996) at java.util.regex.Pattern.compile(Pattern.java:1696) at java.util.regex.Pattern.<init>(Pattern.java:1351) at java.util.regex.Pattern.compile(Pattern.java:1028) at java.lang.String.replaceAll(String.java:2223) at com.android.tools.idea.gradle.dsl.parser.settings.ProjectPropertiesDslElement.getStandardProjectKey(ProjectPropertiesDslElement.java:52) at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveProjectReference(GradleDslExpression.java:191) at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveReference(GradleDslExpression.java:92) at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslReference.getValue(GradleDslReference.java:66) at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveReference(GradleDslExpression.java:152) at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslReference.getValue(GradleDslReference.java:66) at com.android.tools.idea.gradle.dsl.parser.elements.GradleDslExpression.resolveReference(GradleDslExpression.java:152) 和其他临时文件夹
  • 将项目签出到新位置
  • .idea/中启用&#34;新的项目结构对话框&#34; - 然后对话框工作,但关闭它时仍然会出现同样的错误,其他情况仍然无法正常工作

我使用Android Studio 2.3.3更新了所有插件和android库,gradle 3.3和gradle插件2.3.1;所有这些都在最新的gentoo linux上。

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。我的主build.gradle中有这3行:

ext.kotlinVersion = kotlinVersion
ext.supportLibVersion = supportLibVersion
ext.playServicesVersion = playServicesVersion

在此项目中,*Version变量在gradle.properties文件中分配,而不是在build.gradle文件中,因此它们已在所有模块gradle文件中可访问,并且上面的行创建循环引用。 (我不是专家,只是一个猜测)

我认为Kotlin插件在某些时候添加了它们(&#34;在项目中配置Kotlin&#34;选项),自动编辑搞砸了我们复杂的配置。或者以前的一些开发者留在那里。我似乎无法在一个干净的项目上重现它。