Eclipse "Error: no se pudo encontrar o cargar la clase principal"

108

Tengo un proyecto en eclipse en mi computadora portátil que envié a Git https://github.com/chrisbramm/LastFM-History-Graph.git

Funciona completamente en mi computadora portátil y se ejecuta / compila sin problemas, pero en mi escritorio no Eclipse da el error

Error: no se pudo encontrar o cargar la clase principal lastfmhistoryguis.InputPanel

Intenté construir el proyecto desde:

Project>Build Project

Pero nada pasó. He configurado las PATHvariables en esta computadora en JRE6, JRE7 y JDK 1.7.0 aunque no están configuradas en mi computadora portátil.

Tenía un archivo Jar ( last.fm-bindings-0.1.1.jar ) que estaba en mi .classpatharchivo que estaba en la carpeta C: \ Users \ Chris \ Downloads en mi computadora portátil, por lo tanto, no estaba incluido en el árbol de git que yo recientemente traído a la carpeta del proyecto y comprometido, pero no estoy seguro de si lo he hecho bien. ¿Esto también estaría causando un problema pero no hay un argumento principal allí?

No puedo hacer ejercicio ahora, lo que necesito verificar / cambiar.

Chris
fuente
24
¿Probaste Proyecto> Limpiar y Proyecto> Crear proyecto?
javaCity
3
Varias veces y no parece haber funcionado
Chris
La ruta de clase ambiental del sistema incluye. ¿Dónde más necesito cambiar y qué haría específicamente?
Chris
En mi caso, estaba corriendo java .\bin\selenium-server-standalone-3.9.1.jarcuando debería haber sidojava -jar .\bin\selenium-server-standalone-3.9.1.jar
Coty Embry

Respuestas:

40

En su classpath está utilizando una ruta absoluta, pero ha movido el proyecto a una nueva máquina con una estructura de archivo muy posiblemente diferente.

En su classpath, por lo tanto, debería (y probablemente en general si va a empaquetar JARS con su proyecto), usar la ruta relativa:

En su cambio .classpath

<classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/><classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/>

a

<classpathentry kind="lib" path="last.fm-bindings-0.1.1.jar"/>
poulter7
fuente
19
¿Cómo cambiaría esto?
Aequitas
No tengo frascos externos, pero estoy enfrentando problemas similares. stackoverflow.com/questions/49738153/…
Jesse
@Aequitas hace "Ejecutar" -> "Ejecutar como" -> "Aplicación Java". una vez, y establecerá la ruta de clases automáticamente. Vea la respuesta de Blamkin86. La configuración de Classpath se puede encontrar en "Ejecutar" -> "Ejecutar configuraciones ...".
gkubed el
72

Si crea una clase java con public static void main(String[] args), Eclipse ejecutará ese método principal por usted haciendo clic derecho en el archivo en sí, o en el archivo en el explorador del proyecto, luego eligiendo:

"Ejecutar como" -> "Aplicación Java".

Una vez que haga esto, Eclipse almacena información sobre su clase, por lo que puede volver a ejecutar la clase fácilmente desde el menú Ejecutar como (botón verde de reproducción en la barra de herramientas) o desde el cuadro de diálogo Ejecutar configuraciones.

Si posteriormente MUEVE la clase java (manualmente o sin embargo), vuelva a elegir

"Ejecutar como" -> "Aplicación Java",

desde la nueva ubicación, Eclipse ejecutará la configuración almacenada original, intentará invocar esta clase desde su ubicación original, lo que provoca este error.


SOLUCIÓN:
Para mí, la solución fue ir a las configuraciones de ejecución, (Botón de reproducción verde -> Configuraciones de ejecución) y eliminar todas las referencias a la clase. La próxima vez que corras

"Ejecutar como" -> "Aplicación Java"

Eclipse escribirá una nueva configuración para la clase movida y el error desaparecerá.

Blamkin86
fuente
2
Gracias..!! Este funcionó para mí. El problema comenzó cuando cambié el nombre del proyecto.
NixRam
+1 public static void main(String[] args)es lo que me atrapó. Accidentalmente tuve la firma incorrecta (en Mainlugar de main). Por lo tanto, es importante asegurarse de que la firma sea correcta. :)
Nicholas Miller
10
¿Cómo "eliminamos todas las referencias a la clase"?
aCarella
2
Trabajado como un encanto. Mi problema fue que creé un build.gradle y settings.gradle que estaban cambiando los nombres predeterminados que estaban asociados al proyecto. Eliminar las referencias (ejecutar como -> ejecutar configuraciones -> eliminar todas las configuraciones asociadas al proyecto)
randombee
1
"eliminar todas las referencias a la clase": ¿debo eliminar todas las configuraciones de ejecución?
jcool
55

tl; dr : Limpia toda tu ruta de compilación y todo lo que le hayas agregado manualmente. Esto incluye fuentes adicionales, proyectos, bibliotecas.

  • Proyecto -> Limpiar
  • Asegúrese de que Proyecto -> Generar automáticamente esté activo
  • Proyecto -> Propiedades -> Ruta de compilación de Java -> Bibliotecas: elimine cualquier biblioteca externa que haya agregado . No elimine bibliotecas estándar como la biblioteca del sistema JRE.
  • Intente ejecutar su clase principal ahora. El error "No se pudo encontrar la clase / cargar" debería desaparecer. Intente agregar sus libs / jars externos uno tras otro.

Razón detrás de esto: el compilador tuvo problemas para vincular las bibliotecas al proyecto. Falló y produjo un mensaje de error incorrecto.

En mi caso, debería haber sido algo como "No se pudo agregar AutoHotkey.dll a la ruta de compilación" porque eso fue lo que hizo que el compilador fallara.


Si esto aún no funciona, eche un vistazo al ErrorLog integrado de Eclipse :

Ventana -> Mostrar vista -> General -> Registro de errores

phil294
fuente
26

Hice todas las cosas mencionadas anteriormente, pero ninguna funcionó para mí.

Mi problema se resolvió de la siguiente manera:

  1. Haga clic derecho en su Proyecto> Propiedades> JavaBuildPath> Bibliotecas .
  2. Retire el archivo jar, que tiene una bandera roja.
  3. Si el problema persiste, pruebe la siguiente solución. Esto funcionó para mí cuando enfrenté este problema por segunda vez:
    1. Haga clic con el botón derecho en Proyecto> Propiedades> Ruta de compilación Java> Bibliotecas
    2. Quitar biblioteca
    3. Agregar biblioteca. (Elija la biblioteca del sistema JRE)
Atul Chavan
fuente
¡trabajó para mi! También tenía un signo de exclamación junto al nombre de la carpeta de mi proyecto. Esto también solucionó eso
benzabill
¡Trabajó para mi! Gracias
Dhruv Kaushal
1
esto funcionó simplemente eliminando y volviendo a agregar la misma biblioteca java JRE
Andrew Norman
Eso funcionó para mí a pesar de que no había advertencia ni signo de exclamación
Michał Leon
Hermano, literalmente acabas de guardar mi proyecto AP Java, no tienes idea, muchas gracias
Rohan Singh
18

Enfrenté un problema similar en mi proyecto de aplicación web maven después de pasar casi una hora, encontré una solución que funcionó para mí. Escribí el siguiente comando maven y funcionó

mvn clean install -U
No sé la razón exacta detrás de esto.

rajeev pani ..
fuente
1
Lo mismo para mí, tampoco sé por qué sucedió esto en primer lugar.
ns del
En eclipse, haciendo clic derecho en Run As..Maven clean, luego lo Run As..Maven installhice por mí. El problema comenzó cuando cambié un proyecto eclipse java para convertirme en un proyecto eclipse maven. +1 para apuntar en la dirección correcta.
CodeMed
-U, - update-snapshots Obliga a comprobar si faltan versiones e instantáneas actualizadas en repositorios remotos
Kanagavelu Sugumar
9

¿Supongo que ha importado el proyecto a su instalación de escritorio eclipse? Si ese es el caso, debe seleccionar Proyecto> Limpiar. Luego reconstruya su proyecto. Funcionó como un encanto para mí.

Cris CodeCruncher
fuente
9

Tuve el mismo problema y lo resolví usando:

Eclipse Mars
Egit
Github
Maven Project

El problema fue que hice que mi proyecto maven estuviera disponible para github. Se movió mi proyecto a mi carpeta de GitHub.

Solución:

  • Cerrar Eclipse
  • Elimina la carpeta de metadatos dentro de tu espacio de trabajo
  • Reiniciar Eclipse

Aparecerá la pantalla de inicio.

  • Cerrar la pantalla de inicio
  • Haga clic derecho en el explorador de paquetes
  • Elija "proyecto import maven",
  • Navegue a su carpeta github e importe el proyecto maven.

Después de esto, mi proyecto se compiló con éxito.

Matthis Kohli
fuente
7

Verifique que su proyecto tenga un constructor:

  • verifique las propiedades del proyecto (en el "explorador de paquetes", haga clic derecho en el proyecto, seleccione "propiedades"), allí la segunda sección es "Constructores", y debería contener el "Constructor Java" predeterminado
  • o busque en el archivo ".project" (en ... / workspace / yourProjectName / .project) la sección "buildSpec" no debe estar vacía.

Debe haber otras formas, pero lo que hice fue:

  • apagar eclipse
  • edite el archivo. "proyecto" para agregar la sección "buildSpec"
  • reiniciar el eclipse

Un archivo ".project" mínimo de Java adecuado debería verse así:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>myProjectName</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>       
                    <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>      
</projectDescription>
loic.jaouen
fuente
1
Esto me lo arregló. No es necesario cerrar Eclipse para cambiar el .projectarchivo, simplemente puede cerrar el proyecto.
Luís de Sousa
Yo, por otro lado, simplemente apagué Eclipse (pero no edité el .projectarchivo. Volví a encender Eclipse y funcionó: el error desapareció.
Shahar
6

Bueno, lo siguiente funcionó para mí ...

  1. Fue a la carpeta del proyecto (adentro workspace)
  2. Luego, eliminó la bincarpeta
  3. Luego, proyecto / proyectos limpios (en Eclipse)
  4. construido / ejecutado desde Eclipse.
DeeCode
fuente
Bienvenido a SO, DeeCod. Eliminar la carpeta bin y hacer un "proyecto> limpiar" y compilar ya se ha sugerido en otras respuestas. En lugar de publicar un "yo también" como respuesta, recomendaría obtener suficiente reputación (solo necesita 50) para publicar comentarios y confirmar que un enfoque en particular funcionó para usted en un comentario.
Amos M. Carpenter
1
¡Gracias Amos! De todos modos, lo siento si me equivoco, por lo que veo -> Eliminar el contenedor antes de Limpiar / reconstruir no se sugiere en otras respuestas en este hilo ... Simplemente Limpiar> La compilación no funcionó en mi escenario ... siempre que esto ayuda a alguien :)
DeeCode
No se preocupe, me he encontrado con muchos de estos escenarios en los que probar combinaciones de cosas extrañas de repente funciona sin razón aparente. ;-)
Amos M. Carpenter
4

Algo similar me sucedió algunas veces, la única forma que conocía de solucionar esto era eliminar la carpeta de metadatos. Afortunadamente he encontrado otra forma.

Intente ir a propiedades del proyecto > Ruta de compilación de Java> pestaña Ordenar y exportar> seleccionar todo (o intente jugar con casillas de verificación allí).

Esto debería provocar la reconstrucción completa del proyecto y que Eclipse vea la clase principal.

Además: He notado que este error ocurre cuando tienes muchos proyectos en un espacio de trabajo y algunos de ellos están configurados incorrectamente (aparece un signo de exclamación rojo). Arreglar la ruta de construcción del proyecto y otras configuraciones (incluso si este proyecto no está relacionado con el que tiene problemas) debería solucionar un problema.

Dmitry Avgustis
fuente
4

Mi problema Main classno se pudo encontrar o no se cargó se debe a una razón interesante.

En nuestro proyecto, estamos usando Mavencomo herramienta de construcción y mi main class extendsclase, que está en el class pathpero su alcance estaba test, mientras que el main classno está bajo el paquete de prueba.

Si su clase principal es extendsuna clase, primero intente ejecutarla main classeliminando extendspart. Si se ejecuta, al menos comprenderá que el problema no se debe a run configurationni a eclipsela clase, su main class extends.

Indefinidamente
fuente
4

Para mí, la razón por la que este error comenzó a aparecer se debió a que classpath superó el límite en Windows. Luego descubrí la opción "Usar JAR temporal para especificar classpath (para evitar limitaciones de longitud de classpath)". Seleccionar esta opción solucionó el problema por mí. La opción reside en Ejecutar / Depurar configuración, pestaña Classpath, vea la imagen a continuación.

ingrese la descripción de la imagen aquí

xbranko
fuente
3

Este problema también se produce cuando tiene caracteres especiales en la ruta de su espacio de trabajo. Tenía mi espacio de trabajo en mi carpeta personal y su nombre estaba en griego, así que no funcionó. Cambié mi espacio de trabajo, ahora solo contiene caracteres en inglés en su ruta, y ahora el proyecto se construye sin problemas.

Stavros Stefanakakis
fuente
3

Si está utilizando eclipse, los siguientes pasos resolverán su problema:

Vaya a Ejecutar -> Ejecutar configuraciones -> Búsqueda de clase principal -> Localice su clase manualmente -> Aplicar -> Ejecutar


fuente
3

Tuve este error. Fue porque tuve en static void main(String[] args)
lugar de public static void main(String[] args)

Pasé casi una hora tratando de averiguarlo.

Nota: La única diferencia es que no declaré mainserpublic

Alex Spencer
fuente
3

Si su código es bueno y sabe que tiene un problema de Eclipse, esto lo resolverá.

Simplemente puede eliminar $ yourproject / .classpath, $ yourproject / .project y $ yourworkspace / .metadata. Alguien más mencionó esta opción. Sin embargo, hará explotar todo tu espacio de trabajo. En lugar:

  1. Elimina .classpath y .project de tu proyecto
  2. Elimina tu proyecto en eclipse. NO verifique eliminar el contenido del proyecto en el disco.
  3. Ahora, en un explorador de archivos, vaya a $ yourworkspace / .metadata.
  4. Buscar $ yourprojectname
  5. Elimina todo lo que encuentres. Debería ser seguro eliminar cualquier cosa en el directorio .metadata.
  6. En eclipse: Archivo> Importar> General> Proyectos de carpeta o Archivo> $ yourproject> finalizar
  7. Haga clic derecho en su proyecto> propiedades> Ruta de compilación Java> pestaña Fuente
  8. Seleccione todas las carpetas de origen, elimínelas.
  9. Agregar carpeta, seleccione src (como se llame su carpeta src) y agréguelo
  10. Ir a la pestaña de bibliotecas
  11. Agregue los frascos a su ruta de construcción aquí. No debería haber más errores en su proyecto ahora.
  12. Ejecute su proyecto como lo haría normalmente.
Brent Sandstrom
fuente
Sobrescribí el archivo .classpathy el .projectarchivo con archivos de otro proyecto, y funcionó ... ¿es una coincidencia o la ruta de clase es realmente lo que importa?
Amarth Gûl
Probablemente sea una coincidencia, ya que esos archivos son específicos de su proyecto. Es posible que, sin saberlo, haya hecho que eclipse regenere esos archivos introduciendo errores. Abra el archivo y léalo y obtendrá una idea de lo que hacen. Classpath contiene directorios de carpetas libs y src y .project almacena complementos y cosas de facetas del proyecto
Brent Sandstrom
3

esto podría causar bibliotecas jdk si ha importado a jre

esto me pasa a mí, así que revisa los jre jars instalados

en eclipse, haga clic en Windows> Preferencias> Java> Jres instalado> haga clic en Jre y edite después de eso, busque en la lista de jar, asegúrese de que ninguno sea jdk o esté dañado, ingrese la descripción de la imagen aquí

user889030
fuente
2

Me encuentro con el mismo problema, pero en mi caso fue causado por la carpeta de origen que falta (vacía) (existe en el proyecto original, pero no en el repositorio GIT porque está vacío).

Después de crear la carpeta que falta, todo funciona.

nothrem
fuente
2

También recibí este error, justo después de mover algunos recursos. Al comprobar el registro de errores, vi que Eclipse no podía crear una compilación porque no podía eliminar un archivo / carpeta. Intente eliminar manualmente la carpeta "bin" (o como se llame).

Eso funcionó para mí, al menos.

Zar
fuente
Sí. después de mover el proyecto a git. Ocurre el problema. Intento esto y también necesito "cerrar proyecto" y "proyecto abierto" para hacer el truco.
Yeung
2

Me encontré con este error hoy porque configuré un programa Hola mundo y luego corté y pegué un nuevo programa en el mismo archivo. Para solucionar el problema de no encontrar hola mundo como se llamó el último, hice clic en Ejecutar-> Ejecutar configuraciones y luego, en Clase principal, hice clic en buscar y encontré mi nuevo nombre de clase y lo reemplacé con el nuevo nombre correcto en el texto que pegué . Este es un problema de novatos que conozco, pero también es fácil de solucionar. ¡Espero que esto ayude a alguien! Douglas

Douglas E Knapp
fuente
2

Tuve el mismo problema con el archivo .classpath correcto, y pronto descubrí que en realidad no se contaba el archivo .classpath (después de que solucioné este problema, reemplacé el archivo .classpath viable por el original, el proyecto aún funcionaba, lo que significa que. archivo classpath no fue el caso)

Como es un proyecto de Maven, todo lo que hice fue:

  1. mvn eclipse: limpio
  2. eliminar proyecto eclipse
  3. importar el proyecto
  4. hecho

¡Espero eso ayude!

karl li
fuente
2

En general, esto sucede porque Eclipse limpia los .classarchivos, pero no los vuelva a compilar. Verifique la bincarpeta, debe estar vacía. Luego debe verificar si hay algo más que esté causando que la compilación falle. Es posible que haya agregado algunos archivos jar en classpath, que es posible que Eclipse no pueda encontrar.

usuario3687451
fuente
2

Simplemente vaya a su Explorador de paquetes y presione F5, o para algunas computadoras portátiles fn + F5. La razón es que eclipse piensa que los archivos están en algún lugar, pero los archivos están en otro lugar. Al actualizarlo, los coloca a ambos en la misma página. No se preocupe, no perderá nada, pero si desea tener mucho cuidado, simplemente haga una copia de seguridad de los archivos de la carpeta de proyectos de Java en un lugar seguro.

Steve Lam
fuente
Esto funcionó para mí. Encontré el problema después de actualizar a una versión más nueva de Eclipse. Es un proyecto de Gradle y Gradle Clean Eclipse no resolvió el problema. Una simple actualización lo hizo.
dnuttle
2

Estos son los sencillos pasos que me ayudaron a solucionar este problema.

  1. Cierra el eclipse
  2. Elimine la carpeta ".metadata" en su espacio de trabajo. (puede ser una carpeta oculta)
  3. Abra el eclipse (creará automáticamente la carpeta ".metadata" en su espacio de trabajo)
  4. Intente ejecutar el programa.
Soham Darji
fuente
Esto desvinculará mi proyecto del espacio de trabajo. ¡Tendrás que volver a importar todos tus proyectos!
Muhammad Gelbana
Estoy de acuerdo con @MuhammadGelbana, eliminé el .metadata y arruinó mi espacio de trabajo. Tenga mucho cuidado al probar esta solución.
TYMG
2

Para solucionar este error, siga los siguientes pasos:

Paso 1: Abra el archivo .project .

Paso 2: Marque dos etiquetas ...

    a) <buildSpec>

    b) <natures>

Paso 3: Si las etiquetas mencionadas anteriormente no incluyen ningún contenido, seguramente se producirá el error anterior.

Paso 4: agregue el siguiente contenido a cada etiqueta para resolver el error anterior.

Para <buildSpec>:

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

Para <natures>:

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

Paso 5: Guarde su archivo presionando ctrl + s.

Paso 6: Por razones de seguridad, simplemente cierre el proyecto una vez y vuelva a abrirlo.

Paso 7: Eso es todo. ¡Estás listo para rockear!

Mencione en los comentarios si la solución fue útil.

Gracias.

Nishat Lakhani
fuente
2

Compruebe el registro de errores del espacio de trabajo (Windows-> Mostrar vista -> Registro de errores). Si ve que alguno de los archivos jar importados está dañado, elimine la carpeta del repositorio correspondiente y vuelva a importar.

Raman
fuente
2

2 tipos de salidas de soluciones para la misma.

(1) Vaya a ejecutar configuraciones: - ejecutar-> ejecutar configuraciones En la pestaña Classpath:

Seleccione Agregar avanzado donde Eclipse generalmente coloca el * .class para los proyectos, que está en bin. Entonces agregué el directorio bin para el proyecto.

(2) Si la primera solución no funciona, entonces significa que el jar que está señalando a su proyecto está tomando el camino de su repositorio local de Maven que no se actualiza a su proyecto, así que es mejor que revise el jar de ese repositorio local de Maven y cópielo y péguelo en un nuevo proyecto simplemente o simplemente descárguelo de cualquier sitio y configúrelo en su ruta de construcción.

Espero que ayude.

navis1692
fuente
1

Yo tuve el mismo problema. Pasé unas horas y finalmente cambié mi espacio de trabajo a la carpeta local y todo funciona ahora. Quizás ahorre algo de tiempo para otros. Jon

usuario1362446
fuente
1

Acabo de tener este problema después de tener el problema de que Windows 8 se niega a actualizar mi ruta sin importar en qué configuré JAVA_HOME - java -version informó el último JDK en lugar del que almacené en JAVA_HOME. Finalmente conseguí que funcionara poniendo '% JAVA_HOME% / bin;' al principio de la variable de entorno de la ruta en lugar de al final. Luego lancé Eclipse y, de repente, no pudo encontrar mi clase principal cuando funcionó bien antes de esto. Lo que hice para solucionarlo fue ir a las propiedades del proyecto, eliminar la biblioteca JRE existente de la pestaña de bibliotecas, agregar un nuevo JRE seleccionando el botón "Agregar biblioteca" y luego seguí las instrucciones para instalar JRE 7 como mi JRE predeterminado. Ahora todo ha vuelto a funcionar.

Howard Roark
fuente
1

Encontré otra solución en mi caso este problema: Eclipse->Preferences->Java->Installed JREluego presione el botón Buscar. Seleccione la carpeta en Linux y /usrluego Eclipse encontró todas las JVM.

Seleccione otra JVM demasiado actual . Está resuelto para mi caso.

Karol Preiskorn
fuente