Android Studio 高版本无法执行Java main方法的问题

最近发现Android Studio 升级之后,新创建的项目执行Java类的main方法报错。然后查找各方面的资料,试了很多方法比如 在项目根目录 gradle.properties中添加 android.enableAapt2=false、切换gradle离线模式运行等,我还试了一下clean项目、重启android studio 、删除项目重新创建、重新下载gradle等方式,就是死活没用。

android studio环境

android studio版本:4.0
gradle版本:5.6.4

android studio 错误信息

FAILURE: Build failed with an exception.

* Where:
Initialization script 'C:\Users\xxx\AppData\Local\Temp\CeShi_main__.gradle' line: 21

* What went wrong:
A problem occurred configuring project ':app'.
> Could not create task ':app:CeShi.main()'.
   > SourceSet with name 'main' not found.

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

* Get more help at https://help.gradle.org

BUILD FAILED in 126ms

解决方案有两种

方案一:治标不治本(临时解决方案)

Run 'xxx.main()' with Coverage

在这里插入图片描述
这种方法的使用反正我看着不爽,接下来介绍指标治本的一种方法

方案二:治标治本,用着舒服(修改.idea/gradle.xml文件)

由于android studio 使用的是gradle作为构建工具,所以最终的问题还是gradle配置的问题,这样说以前的老项目就会没有任何问题,这样的话我们就先找到一个老的项目,然后找一个新项目,打开gradle配置查找区别,就能找到问题,通过对比发现.idea/gradle.xml文件内部果然不同,于是参照老的项目去修改,果然发现问题解决。

新项目的.idea/gradle.xml

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GradleMigrationSettings" migrationVersion="1" />
  <component name="GradleSettings">
    <option name="linkedExternalProjectsSettings">
      <GradleProjectSettings>
        <option name="testRunner" value="PLATFORM" />
        <option name="distributionType" value="DEFAULT_WRAPPED" />
        <option name="externalProjectPath" value="$PROJECT_DIR$" />
        <option name="modules">
          <set>
            <option value="$PROJECT_DIR$" />
            <option value="$PROJECT_DIR$/app" />
          </set>
        </option>
        <option name="resolveModulePerSourceSet" value="false" />
      </GradleProjectSettings>
    </option>
  </component>
</project>

老项目的.idea/gradle.xml

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GradleMigrationSettings" migrationVersion="1" />
  <component name="GradleSettings">
    <option name="linkedExternalProjectsSettings">
      <GradleProjectSettings>
        <option name="delegatedBuild" value="false" />
        <option name="testRunner" value="PLATFORM" />
        <option name="distributionType" value="DEFAULT_WRAPPED" />
        <option name="externalProjectPath" value="$PROJECT_DIR$" />
        <option name="modules">
          <set>
            <option value="$PROJECT_DIR$" />
            <option value="$PROJECT_DIR$/app" />
          </set>
        </option>
        <option name="resolveModulePerSourceSet" value="false" />
      </GradleProjectSettings>
    </option>
  </component>
</project>

经过新老项目的两个文件对比发现,在新项目 <GradleProjectSettings> 标签下少了

<option name="delegatedBuild" value="false" />

这一行配置,然后在新创建的项目添加这一行配置,运行代码成功。

这一行配置的字面意思大概为:不委托gradle进行构建。实际效果加上这一行配置,jvm执行Java类的main方法了,而不是gradle当做task来执行。

注意:
1、虽然完成了这个配置,但是还要删除之前编译的文件才可以运行
在这里插入图片描述
在C盘找到你编译的那个文件并且删除掉,这时候在运行main方法就没问题了。
2、还需要在项目根目录的gradle.properties文件里增加android.enableAapt2=false这一行代码才可生效。
在这里插入图片描述

通过本人实验得出结论,方案二注意事项二者缺一不可。

本人能力有限,如有错误解释和修改,还望指正后去修改该问题。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值