【问题标题】:Android Studio refuses to run main()Android Studio 拒绝运行 main()
【发布时间】:2020-01-04 04:26:45
【问题描述】:

复制步骤:

  1. 在 Android Studio 中启动一个新项目(使用最新更新);
  2. 像往常一样创建一个新类并添加 main();
  3. 右键单击类以运行 main() 作为测试。
package test;

public class Test {
    public static void main(String[] args) {
    }
}

通常我希望我可以 System.out.printLn("Hello World") 但这一次,无论它是一个新项目,我都会收到以下错误:

2:34:23 PM: Executing task 'Test.main()'...

Executing tasks: [Test.main()] in project C:\Users\regan\Desktop\events\MyApplication


FAILURE: Build failed with an exception.

* Where:
Initialization script 'C:\Users\regan\AppData\Local\Temp\Test_main__2.gradle' line: 20

* What went wrong:
A problem occurred configuring project ':app'.
> Could not create task ':app:Test.main()'.
   > SourceSet with name 'test' 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 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 0s
2:34:24 PM: Task execution finished 'Test.main()'.

在 Unity 中使用 C# 多年后,我相当是 Java 新手,不知道所有这些东西想告诉我什么。我已经用谷歌搜索了,但我发现最接近的是一种隐藏此错误的方法(假设代码仍在编译)。我至少需要这段代码才能编译。

【问题讨论】:

  • 我正在努力解释那个答案。上周我实际上很好地完成了这个过程,但今天我尝试了,在 Android Studio 更新之后,这似乎是唯一的区别。我不知道“子项目{}部分”是什么。
  • 这告诉您,您创建了一个 Android 项目,但 Android 应用程序使用 Android 生命周期运行,而不是 main

标签: java android android-studio gradle


【解决方案1】:

快速修复:您可以使用 Run with Coverage. 运行。见下图。

永久解决方案:添加<option name="delegatedBuild" value="false" />

在路径 E:\Project\.idea\gradle.xml 下的文件 gradle.xml 内。见下图。

【讨论】:

  • 我在升级到最新版本的 kotlin 后就开始发生这种情况。
  • 同样的,在更新到 Kotlin 1.4.20-release-Studio4.1-1 之后发生。 Gradle 选项有帮助,非常感谢!
  • @stevensmith, Goltsev 很高兴为您提供帮助。
【解决方案2】:

在此路径中打开“gradle.xml”文件:

.idea/gradle.xml

/>之前添加以下行

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

就是这样,它对我有用。

【讨论】:

  • 这是正确的。我也测试过 Run with Coverage 也可以。
  • 这是正确的答案!荣誉。但它实际上是做什么的呢?
【解决方案3】:

app 模块是一个 android 库,需要诸如 onCreate() 等 android 生命周期方法才能成功执行。如果您想执行纯 java 代码,一种选择是使用 File -> New Module -> Java Library 将 java 库添加到项目中,然后在其中添加 main 方法:

package com.example.lib;

public class MyClass {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

这将按您的预期工作。

【讨论】:

    【解决方案4】:

    尝试使用“覆盖”运行它。我没有任何解释,但它有效!

    【讨论】:

    • 这是正确答案!谢谢
    【解决方案5】:

    我也遇到过这个问题

    我发现当我将 Gradle 更改为脱机然后再次联机然后更新 Gradle 并确保连接和代理设置正确时,事情开始正常工作

    【讨论】:

      【解决方案6】:

      我目前使用的是 Android Studio 版本 4.0.1

      1. 创建项目后,您应该转到选项卡 文件 ==> 新建 ==> 新建模块...

      2. 关于“创建新模块/选择模块类型”:

      3. 选择 Java 或 Kotlin 库

      4. 完成后,转到您创建的 javalib 文件夹/模块。

      5. 在那里创建Java文件。

      6. 尝试运行它

      【讨论】:

      • 很高兴它有帮助:D
      【解决方案7】:

      避免将类名称命名为 Test,当您将类命名为 Test 时,Android Studio 会不知何故被搞砸。

      【讨论】:

      • 你好,费拉罗!如果您的答案很简短并且没有完全解决问题,最好对问题发表评论!
      • 我仍然很感激。 TY 获取该信息 :) 我没有足够的声誉来投票。
      • @ReganMusic 没问题,很高兴知道我的回答有帮助。
      【解决方案8】:

      如果模块来自android应用程序或库,则不允许运行main;因为预期的是activity lifecycle 的各个阶段之间的导航转换。

      在以下应用了这些插件的模块的情况下,主程序无法运行。

      build.gradle.kts (:appAndroid)

      plugins {
          id("com.android.application")
          id("kotlin-android")
      }
      

      build.gradle.kts (:libraryAndroid)

      plugins {
          id("com.android.library")
          id("kotlin-android")
      }
      

      build.gradle.kts (:kmmShared)

      plugins {
          kotlin("multiplatform")
          id("com.android.library")
      }
      

      如果运行main的目的是为了测试,你真正要做的就是使用test的sourceSets。


      如果模块来自 Java 或 Kotlin 库,则允许运行 main,因此错误不会存在。

      以下应用插件描述了一个 JVM 库:

      build.gradle.kts (:jvmLibrary)

      plugins {
          id("java-library")
          id("kotlin")
      }
      

      最后,如果使用 test sourceSets 或创建 JVM 模块对您来说还不够,那么有一个“hack”很弱,因为它依赖于 IDE(它在 KMM 模块中不起作用)。

      .idea/gradle.xml

      <project version="4">
        <component name="GradleSettings">
          <option name="linkedExternalProjectsSettings">
            <GradleProjectSettings>
      
              <option name="delegatedBuild" value="false" />
      
            </GradleProjectSettings>
          </option>
        </component>
      </project>
      

      GL

      【讨论】:

        猜你喜欢
        • 2022-01-25
        • 2019-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-01
        • 1970-01-01
        • 2022-06-22
        相关资源
        最近更新 更多