Error: no se pudo encontrar o cargar la clase principal en intelliJ IDE

151

Soy un principiante en Java y estoy tratando de ejecutar mi código usando IntelliJ que acabo de instalar como mi IDE con JDK 1.7. El siguiente fragmento de código ni siquiera se compila y sigue dándome el error:

Error: Could not find or load main class libTest

Código

import java.lang.Integer;
import java.lang.String;
import java.lang.System;
import java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

¿Hay algún cambio que tenga que hacer en la configuración del compilador? ¿O es el código?

Cartero confundido
fuente
2
¿Cuál es el nombre del archivo fuente? Es libTest.java?
QuantumMechanic
import java.lang...Esto sucede automáticamente para las clases en el langpaquete.
Andrew Thompson,
Como lo menciona QuantumMechanic, su clase principal debe estar en un archivo llamado exactamente igual. Por lo tanto, libTest debe estar en un archivo java llamado libTest.java, de lo contrario el compilador de Java se quejará. Además, ¿creó la fuente a través de IDEA, o creó un nuevo proyecto IDEA sobre la fuente existente?
Mcfinnigan
trató de importar java.lang no hizo ninguna diferencia
Confundido Mailman
son idénticos ¿Hay alguna otra razón por la que tal error debería ser marcado?
Mailman confundido

Respuestas:

178

Esto podría ayudar:

1) Menú "Construir" -> " Rebuild Project". A veces Intellij no reescribe las clases porque ya existen, de esta manera le pides a Intellij que reescriba todo.

2) Menú "Ejecutar" -> " Edit configuration" -> eliminar el perfil -> volver a agregar el perfil ("Aplicación" si es una aplicación Java), elija su clase principal en el menú desplegable "Clase principal".

3) Menú "Construir" -> " Rebuild Project".

Ehsan
fuente
9
Tenía un nuevo proyecto en IntelliJ y no se ejecutó. Rebuild Project¡trabajó para mi!
Danny Harding
La segunda opción funcionó para mí. Pero elimine el perfil de configuración y luego, haga clic con el botón derecho en su clase -> ejecutar
NoName
2
"Build" menu -> "Rebuild Project- hizo el trabajo! Gracias
Yan Khonski
1
La primera opción rebuild projectfuncionó para mi problema. ¡Gracias!
khwilo
1
Eliminé los directorios .idea, .mvn y otros, luego reinicié IntelliJ. Fui al registro de eventos, agregué el proyecto como un proyecto Maven y luego seguí los pasos mencionados por @Kishore aquí. Está trabajando ahora.
Sunny Shekhar
105

Si ninguna de las respuestas anteriores funcionó para usted, simplemente cierre su intelliJ IDE y elimine el archivo y la carpeta de intelliJ IDE de la raíz del proyecto:

rm -rf .idea *.iml 

Luego abra el proyecto con intelliJ. Debe funcionar ahora.

youhans
fuente
1
Esto funcionó para mí. También reimporté mi proyecto en IntelliJ, pero para la opción "Agrupar módulos", usé "usar nombres calificados" (en lugar de "usar grupos de módulos explícitos".
markhops
3
Eliminar la .ideacarpeta siempre resuelve todos los problemas con los IDE de JetBrains :)
shelll
esto también funcionó para mí, soy un gran admirador de Intellij, pero también deben aprender a hacer cosas simples.
Zwakele Mgabhi
Perdido más de 30 minutos. finalmente esto es lo que tuve que hacer para que las cosas funcionen
vins
Solo este método en esta página funciona para mí.
zionpi
82

Para mí, la solución fue arreglar el directorio de salida en la configuración del proyecto. Antes estaba usando solo "target" para la salida del compilador del proyecto. En cambio, lo actualicé para tener una ruta completa, por ejemplo, D: \ dev \ sigplusjava2_68 \ target ingrese la descripción de la imagen aquí

Tio Iroh
fuente
10
eso no me ayudó
Pavel
Es posible que mi solución aquí sea en realidad una variación sutil de la respuesta de @ Ehsan a continuación. Quizás al especificar el directorio de destino le da una nueva ubicación en la que compilar todos los objetos que esencialmente realizan el mismo trabajo que a Rebuild Project.
Tío Iroh
1
@UncleIroh Si hizo el mismo trabajo, reconstruir + leer la configuración. habría solucionado el problema inicialmente. No fue así, pero su solución sí.
hyperum
Esta debería ser la respuesta aceptada. Siempre me molesta de nuevo ..: p
Christopher Stock
38

Tuve este problema y probé todo lo que se me ocurrió en este sitio.

Ninguna de mis clases de Java fueron recogidas después de que salí de una rama remota. Todas las clases tenían J rojas por sus nombres en la Jerarquía del Proyecto, no C azules.

Al final, traté de seguir este tutorial y unos pocos pasos para probar algo no descrito y solucionar el problema: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Esto es lo que hice:

  1. Ir a archivo | Estructura del proyecto, o presione Crtl + Shift + Alt + S
  2. Seleccione Módulos en la sección Configuración del proyecto.
  3. En la pestaña Fuentes, haga clic en Fuentes en la línea 'Marcar como:'.
  4. Haz clic en el botón Aplicar.

Por alguna razón, todas mis clases tenían C azules.

Alguien con una mejor comprensión de cómo IntelliJ y / o IDE podrían explicar el fenómeno, pero todo lo que sé es que ahora puede ver todas las clases y, lo que es más importante, la principal y ejecutar.

Sarah Cohen
fuente
Esto solo funcionó para mí después de cerrar Intellij, eliminar la carpeta .idea, luego volver a abrir Intellij y seguir los pasos anteriores.
Shell_Leko
14

Crear explícitamente una outcarpeta y luego configurar la ruta de salida aC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

ME GUSTA ESTO

parecía funcionar para mí cuando solo out, y esperar que IntelliJ hiciera la carpeta no lo haría.


También intente que IntelliJ le haga una nueva configuración de ejecución:

Encuentra el anterior haciendo clic

! [Editar configuraciones

luego quítalo

ingrese la descripción de la imagen aquí

y golpeo bien.

Ahora, (PASO IMPORTANTE) abra la clase que contiene su método principal. Probablemente esto sea más fácil haciendo clic en el nombre de la clase en el Panel del proyecto del lado izquierdo.

Dale un Alt+ Shift+ F10y deberías obtener un

ESTA

Ahora golpea Enter!!

Tadah ?? (¿Funcionó?)

Brad Turek
fuente
La configuración de ejecución funciona, especialmente si movió la main()función de class Maina otra clase. En ese caso, edite la configuración de ejecución como se muestra arriba y cambie el valor de 'Clase principal' a su nombre de clase (totalmente calificado).
forumulator
Solo tengo la opción "Editar configuración", no funciona para mí (
Ver Nick
No pude evitar notar que detectó el nombre de su proyecto y ejecutó la configuración, pero aún es claramente visible en la segunda captura de pantalla
Jacob Schneider
Jacob Schneider, eso es. No recuerdo por qué lo censuré, probablemente por una cautela fuera de lugar.
Brad Turek
14

Invalidar caché y reiniciar su intellij, funcionó para mí. Vaya a Archivo como se muestra en la imagen adjunta

S_K
fuente
7

Sé que esto se preguntó hace un tiempo, pero estaba tropezando con este problema y pensé que mis hallazgos podrían ayudar a otros. Como se señaló, el mensaje de error es básicamente el resultado de la carpeta de salida. Esto se debe a que, cuando intenta ejecutar el programa, primero compila el código y coloca el resultado compilado en la ubicación de salida, y luego intenta cargar el código compilado desde la ubicación de salida. Si el código compilado no está en la ubicación esperada, obtendrá el error.

El punto que particularmente quiero compartir es que algunas veces, el código no se compila (compila), a pesar de que la configuración de ejecución especifica "Compilar" en la sección "Antes del lanzamiento" del panel de configuración.

¿Cuándo puede pasar esto? Una situación que puede hacer que esto suceda es si está utilizando módulos y elimina manualmente el directorio de salida del módulo. Por ejemplo, si tengo un módulo llamado "foo", debería haber un directorio llamado foo en out / production. Si lo elimina manualmente, es posible que el sistema de compilación no sepa que necesita ser reconstruido.

Peor aún, si selecciona Construir | Construya el módulo 'foo', aún puede no reconstruir el módulo. Si ese es el caso, debe seleccionar un archivo en el módulo, por ejemplo 'bar.java' y luego seleccionar Construir | Vuelva a compilar 'bar.java'. Ahora se debe restaurar el directorio de salida out / production / foo.

Dado que IntelliJ generalmente sabe acerca de cualquier cambio que esté ocurriendo, esto me sorprendió y me tomó un poco de tiempo averiguarlo, así que pensé en compartirlo.

msoltys
fuente
6

Compruebe su módulo de clase : he encontrado este problema con intellij: tengo un proyecto de varios módulos maven, el problema es que estoy ejecutando una clase que no existe el módulo dentro de la configuración, por lo que mi problema se soluciona configurando el módulo correcto ( "editar configuración" -> "usar clase de módulo")

que esto te ayude

Abdessattar NOISSI
fuente
A mí también me funcionó. ¡Gracias! Probablemente algo salió mal al instalar una actualización de IntelliJ o el complemento Scala. Luego tienes este extraño problema. Muy molesto y lento. Esperemos que JetBrains encuentre una resolución.
André van Delft
6

Tuve que marcar la carpeta "src" como "Fuentes". Después de reiniciar IntelliJ y reconstruir el proyecto, podría ejecutar el proyecto sin más problemas (ver captura de pantalla ). Editar: Puede acceder a la pestaña "Estructura del proyecto" a través de Archivo-> Estructura del proyecto o presionando Ctrl + Shift + Alt + S.

JUSTICIA
fuente
1
Si usted (como yo) no tiene una pestaña 'fuentes', entonces debe agregar un nuevo módulo (haga clic en el + verde) y seleccione su carpeta principal como fuente. No se sobrescribirá nada y la carpeta src se volverá azul.
john ktejik
5

Abra la pestaña Módulos (presione Ctrl + Shift + Alt + S). Tenía dos módulos en un solo proyecto. He resuelto el problema después de quitar el segundo módulo redundante (ver captura de pantalla).ingrese la descripción de la imagen aquí

Taras Melnyk
fuente
4

Me he enfrentado a tales problemas cuando la clase está en la carpeta predeterminada, es decir, cuando la clase no declara un paquete.

Entonces, supongo que usar una declaración de paquete (por ejemplo package org.me.mypackage;) en la parte superior de la clase debería solucionarlo.

Hakan Serce
fuente
¿Repito esa línea de código? ¿Cómo la modifico en caso de que tenga que hacerlo?
Mailman confundido
Simplemente use un nombre de paquete propio, como este:package org.confused.mailman;
Hakan Serce
Bueno, la declaración del paquete tiene que coincidir donde el IDE ha colocado el archivo. Si el IDE no puso el archivo en sourceBase / org/confused/mailmanagregar esa línea de paquete no será de ayuda.
QuantumMechanic
Supongo que IDE lo guiará en esto y lo solucionará automáticamente, si se selecciona la solución recomendada.
Hakan Serce
no ayuda: / ... el IDE no parece estar molesto con ninguno de los cambios que realizo ... arroja el error anterior y se sienta y se relaja
Confundido Mailman
3

Archivo> Estructura del proyecto> Módulos> Marcar la carpeta "src" como fuentes. Esto debería solucionar el problema. También verifique que se haya seleccionado el último idioma para que no tenga que cambiar el código o hacer ningún cambio de configuración. ingrese la descripción de la imagen aquí

Sumit Jadiya
fuente
Respuesta duplicada
Jay Sullivan
2

En mi caso, el problema parecía estar relacionado con la actualización de IntelliJ. Cuando hice esto, sobrescribí los archivos del antiguo IntelliJ con los archivos del nuevo IntelliJ (comunidad 2017 a comunidad 2018). Después de eso, todos mis proyectos se rompieron. Intenté todo en este hilo y ninguno de ellos funcionó. Intenté actualizar Gradle a la última versión (4 a 4.8) y eso no funcionó. Lo único que funcionó para mí fue eliminar toda la carpeta IntelliJ y reinstalarla. Todos mis proyectos funcionaron después de eso.

ciego
fuente
Parece que esto en realidad. Yo uso intellij portátil, por lo que el nuevo nombre de la carpeta principal como de idea\binser idea_old\biny se renombró la configuración de la carpeta en el %user%\usernameque es .IntelliJIdea2018.2para ser .IntelliJIdea2018.2_oldluego volvió a extraer intellij archivo zip para empezar a usarlo como nueva versión portátil fresco (Esta es la versión 1.2.2018) con Spring La aplicación de arranque de múltiples módulos separados (no vinculados en pom.xml monoparental) es una aplicación de arranque de primavera con su propio pom.xml y ¡listo! Todos los trabajos, carpeta de destino creada, compilando antes de ejecutar a través del tablero de arranque de primavera.
Anddo
1

Para mí, probé algunas de las opciones anteriores, no funcionó. Luego, simplemente cambié el nombre de mi clase de aplicación y eso probablemente forzó a intelliJ a construir un nuevo jar y el mensaje de error comenzó a cambiar. Luego lo renombré y funcionó.

JavaTec
fuente
1

Marque el directorio como directorio de origen. Abierto a través de Ctrl + Shift + Alt + S

ingrese la descripción de la imagen aquí

Crt
fuente
Respuesta duplicada
Jay Sullivan
1

He intentado todos los trucos sugeridos aquí, sin resultado. Al final, simplemente creé una nueva aplicación Maven y la copié manualmente, una por una, pom.xml y los archivos y recursos de Java. Todo funciona ahora. Soy nuevo en IntelliJ y estoy totalmente impresionado, pero lo fácil que es llevarlo a un estado inestable.

Pierluigi Vernetto
fuente
Debe cerrar intellij, eliminar la carpeta .idea (probablemente un archivo oculto); luego abra la carpeta nuevamente en intellij: reiniciará el proyecto intelli basado en la configuración de maven / grade.
Jeremy
1

ingrese la descripción de la imagen aquí

modules.xml con contenido incorrecto, no sé qué le pasa a mi IDEA.

ibamboo
fuente
1

Heredé un montón de archivos .JAVA de otro lugar y no pude encontrar la manera de hacer que funcionen en ningún IDE. Finalmente tuve que ir a la línea de comando donde estaba el archivo Main.JAVA y ejecutarlo javac Main.java. Esto creó un montón de archivos .CLASS. Los IDE pudieron averiguar qué hacer.

codeMonkey
fuente
1

Recibí este error cuando uso Scala / SBT . IntelliJ no pudo encontrar la clase principal, a pesar de que todo estaba configurado correctamente. Mi solución: eliminar la <user>/.sbt/<version>/plugins/targetcarpeta, luego reiniciar IntelliJ.

Beni Murza
fuente
1

Estoy usando IntelliJ con Spring y mi clase principal está envuelta en un JAR. Tuve que marcar el 'Incluir dependencias con el alcance "Proporcionado" en el cuadro de diálogo de configuración Ejecutar / Depurar

Ohad Y
fuente
1

Estamos en la Estructura de Archivo / Proyecto. La respuesta podría ser:

La carpeta indicada como "raíz de contenido" necesita una carpeta secundaria donde está el código. Además, encuentre el botón que marca el código como excluido y no. No debe confundirse con la casilla de verificación que dice excluido sin decir en qué fase y qué ** ¿Es el compilador excluye o excluye el tiempo de ejecución? Estás condenado a probar y mucho. Así que no esa casilla de verificación sino iconos y colores.

Como idea, necesitamos descifrar cómo se pensó originalmente que funcionaba. En primer lugar, nunca lo hicieron funcionar y comenzaron a agregar cosas en un estilo de codaculación prematura. Han pasado tantos años y no se puede esperar ninguna mejora. Pero como cura podemos encontrar alguna forma de hacerlo bien cada vez.

Kurskinen
fuente
1

Otra cosa que puede verificar aquí es el comando real que se pasa a la JVM y asegúrese de que se vea bien. Desplácese hasta la parte superior de su consola Run, debería ser la primera línea.

Los espacios en el campo Opciones de VM de configuración de ejecución malformarán el comando de inicio de la aplicación y pueden generar este mensaje de error

-DsomeArgument="arg with space must be quoted"

fuente
Gracias ! ¡Esto funcionó para mí!
Jcoder
0

Elaborando la solución de Brad Turek ... Una de las plantillas de proyecto IntelliJ Java predeterminadas espera un archivo llamado Main que defina el punto de entrada del método Main y main () de la clase . Si el método está contenido en otro archivo (y clase), cambie la configuración de Ejecutar :

Ejecutar ventana de configuración

  1. Con el proyecto abierto en IntelliJ, use el menú Ejecutar: Editar configuraciones ... para abrir la ventana de configuración de compilación.
  2. Si la entrada para la clase Main no incluye el nombre de su archivo que contiene la clase que expone el main () método de entrada , ingrese el nombre de archivo correcto. (La configuración en la imagen es incorrecta, por eso es roja en el panel de configuración).
  3. Mi método de entrada main () está en la clase (y archivo) ScrabbleTest . Entonces, cambiar la clase Main: a ScrabbleTest corrige el error de tiempo de ejecución.

Como otros han notado, debe reconstruir utilizando la nueva configuración. Estoy usando un paquete, pero eso no parece hacer una diferencia en IME. Espero que esto ayude.

Jake
fuente
0

En mi caso, en el build.gradle del módulo, la asignación mainClassName debe indicar el nombre de clase completo, es decir. como se especifica como el nombre del paquete en el archivo de código fuente de la clase principal.

Mateo
fuente
0

Simplemente reconstruya el proyecto (CTRL + F9) y verifique dos veces (Editar configuraciones) si tiene una clase principal y un módulo correctamente configurados (si corresponde)

AlexPes
fuente
0

La solución simple es ir a la carpeta respaldada en la línea de comando, donde se encuentra la carpeta raíz del proyecto. Debe tener SBT instalado en su máquina.

Si tiene instalado sbt, ejecute el comando "paquete sbt", esto recompilará el proyecto si tiene éxito, vuelva a intelliJ y funcionará.

Ratheesh
fuente
Bienvenido a SO! Cuando responda a una respuesta, incluso si es correcta, intente explicarla un poco.
David García Bodego
0

En mi caso, tenía configurados argumentos vm (relativamente) largos. Convertir estos argumentos (siempre que sea posible) en variables de entorno solucionó el problema para mí

Ahmed Sayed
fuente
No puede tener espacios en sus opciones de VM a menos que ponga "comillas" alrededor de los argumentos
0

En mi caso, la aplicación se ejecuta bien cuando el código inicialmente estaba en el directorio / src del proyecto. Más tarde agregué el directorio / main / java después del / src, luego ocurrió el error "No se pudo encontrar o cargar la clase principal ...". En ese momento no podía agregar /src/main/java/YourMain.java a la configuración de ejecución. Lo que hice fue eliminar la configuración de ejecución, luego hacer clic derecho en el proyecto-> Abrir configuración del módulo (o F4 después de hacer clic en el panel Proyecto) -> Configuración del proyecto-> Módulos eliminar (x) la antigua raíz de contenido y + Agregar raíz de contenido, elija / src / main / java. Reconstruye el proyecto y se ejecuta.

TGU
fuente
0

Probablemente habría especificado un paquete incorrecto y la jerarquía del paquete no sería correcta. Mira abajo

ingrese la descripción de la imagen aquí

El ide destacaría el camino equivocado en ese caso.

Akash Yellappa
fuente
0

En mi caso, es un proyecto maven, reimporté maven (haga clic derecho en el archivo pom.xml y haga clic en Reimportar ), eso funcionó de inmediato.

ddc
fuente