No se pudo encontrar o cargar la clase principal con la configuración de la aplicación IntelliJ

Nicolas:

Tengo un proyecto de IntelliJ IDEA 03/01/2019 usando Gradle, con una clase principal de la siguiente manera:

public final class Main {
    public static void main(String[] args) {
        // Do stuff
    }
}

Pero cada vez que intento poner en marcha mi programa, que siempre muestra el mismo error:

Error: Could not find or load main class com.example.Main
Caused by : java.lang.ClassNotFoundException: com.example.Main

Estoy usando la plantilla de configuración de la aplicación. He probado lo siguiente:

  • Limpia proyecto / Reconstruir
  • Invalidando cachés / reinicio
  • proyecto Reimport Gradle
  • Eliminar la carpeta .idea
  • Eliminar y volver a crear el perfil de configuración
  • Recreando el proyecto desde cero
  • Completamente reinstalar IntelliJ
  • Actualización de JDK 8 a 11 JDK
  • Mis conjuntos de fuentes son correctas, la carpeta de compilación, el módulo de ruta de clases, el paquete de archivos se establecen correctamente. La tarea de construcción se ejecuta antes de lanzar. De hecho, hay efectivamente un Main.classarchivo bajo la build/carpeta y en el archivo JAR generado.

La única solución que conozco es ejecutar una tarea Gradle:

task run(type: JavaExec) {
    main = "com.example.MainKt"
    classpath = sourceSets.main.get().runtimeClasspath
    standardInput = System.in
    isIgnoreExitValue = true
}

Pero prefiero no hacer eso ya que la consola no aceptará la entrada, no es compatible con Unicode, por alguna razón, y no puedo pasar argumentos del programa tan fácilmente como con la ventana de configuración de la IntelliJ.

Alguien ha tenido este problema y cómo se fija? Sólo ha estado ocurriendo a mí que no actualizaba a 2.019,1 IntelliJ, que funcionaba bien la mayoría del tiempo en 06/03/2018.

EDIT: ajustes Gradle introducir descripción de la imagen aquí

EDIT 2: La pregunta original estaba a punto Kotlin pero me di cuenta de que sale el mismo error con Java.

Nicolas:

El problema viene del hecho de que el proyecto tiene un módulo de Android. El módulo necesita el androide Gradle plugin que se aplica globalmente a todos los módulos del proyecto, incluso aquellos que no son módulos androide. Cuando se aplica a un módulo, se añade un androide-Gradle faceta que cambia la ruta de clase del módulo de la opción predeterminada out/classesa build/classes/java. Para los módulos Kotlin, la clase principal no se puede encontrar en tiempo de ejecución ya que la ruta de clases es erróneo.

Hay actualmente no hay manera de aplicar el plugin androide a sólo módulos de android. Soluciones incluyen un parche en el archivo android.jar, automáticamente la eliminación de la faceta Android-Gradle la sincronización, o mover el módulo de Android para un proyecto externo. No hay manera limpia para hacerlo.

El problema ya ha sido reportado aquí , pero no muestra signos de que alguna vez se solucionará.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=167582&siteId=1
Recomendado
Clasificación