问题
笔者在Android开发中,在一个类中添加main函数,运行main方法,控制台报错。
Executing tasks: [:app:WeatherQuery.main()] in project D:\AndroidProjects\assistingAgriculture\app
详细问题
Executing tasks: [:app:WeatherQuery.main()] in project D:\AndroidProjects\assistingAgriculture\app
FAILURE: Build failed with an exception.
* Where:
Initialization script 'C:\Users\86137\AppData\Local\Temp\WeatherQuery_main__.gradle' line: 41
* What went wrong:
A problem occurred configuring project ':app'.
> Could not create task ':app:WeatherQuery.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
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.3.3/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 218ms
解决方案
项目
→
\rightarrow
→.idea
→
\rightarrow
→gradle.xml
在 <GradleProjectSettings>中配置
<option name="delegatedBuild" value="false" />
具体操作步骤如下图所示:
产生原因
问题产生的根本原因是在Android开发中,笔者在一个类中添加了main函数,并尝试运行这个main方法。在Android开发中,通常情况下是不会直接执行Java类的main方法的,而是通过Android框架中的组件(如Activity、Service等)来启动应用。
在笔者尝试运行main方法时,Gradle构建系统试图执行这个任务,但出现了问题。错误信息指出了Gradle无法创建名为main的源集(SourceSet),因为在Android项目中,通常会定义main作为主要的源代码集。由于找不到main源集,Gradle构建失败。
解决原因
解决这个问题的方法是通过更正Gradle项目设置来防止Gradle尝试执行这个main方法。笔者提供的解决方案是在项目的.idea/gradle.xml文件中的<GradleProjectSettings>部分添加了<option name=“delegatedBuild” value=“false” />配置。这样做会告诉Gradle不要执行Java类的main方法,从而解决了问题。
总而言之,问题的根本原因是尝试在Android项目中执行Java类的main方法,而解决方法是通过更正Gradle项目设置来防止Gradle执行这个main方法。
参考文献
解决方案参考Android Studio refuses to run main()
产生原因以及解决原因部分 内容部分参考chatgpt
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈