Eclipse – java.lang.ClassNotFoundException

Al intentar iniciar mi JUnit-Test fuera de Eclipse, obtengo una “ClassNotFoundException”. Al ejecutar “mvn test” desde la consola, todo funciona bien. Además, no hay problemas informados en Eclipse.

Mi estructura de proyecto es la siguiente:

  • proyecto principal (pom-packaging)
    • Proyecto web (embalaje de guerra: mi JUnit-test está aquí)
    • Proyecto Flex
    • Proyecto de configuración

editar: ¿Cómo no se puede encontrar la clase? Es una aplicación HelloWorld simple sin bibliotecas especiales.

Aquí está la configuración de ejecución de mi JUnit: alt text http://www.walkner.biz/_temp/runconfig.png


Testclass (pero como dije, tampoco funciona con HelloWorld simple …):

import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import biz.prognoserechnung.domain.User; import biz.prognoserechnung.domain.UserRepository; import biz.prognoserechnung.domain.hibernate.UserHibernateDao; public class UserDaoTest { /** * the applicationcontext. */ private ApplicationContext ctx = null; /** * the user itself. */ private User record = null; /** * Interface for the user. */ private UserRepository dao = null; @Before public void setUp() throws Exception { String[] paths = { "WEB-INF/applicationContext.xml" }; ctx = new ClassPathXmlApplicationContext(paths); dao = (UserHibernateDao) ctx.getBean("userRepository"); } @After public void tearDown() throws Exception { dao = null; } @Test public final void testIsUser() throws Exception { Assert.assertTrue(dao.isUser("John", "Doe")); } @Test public final void testIsNoUser() throws Exception { Assert.assertFalse(dao.isUser("not", "existing")); Assert.assertFalse(dao.isUser(null, null)); Assert.assertFalse(dao.isUser("", "")); } } 

Me he topado con esa situación varias veces y, después de muchos bashs, encontré la solución.

Verifique la ruta de comstackción de su proyecto y habilite las carpetas de salida específicas para cada carpeta. Vaya uno por uno a través de cada carpeta de origen de su proyecto y configure la carpeta de salida que maven usaría.

Por ejemplo, src/main/java su proyecto web debe tener target/classes en el proyecto web, las clases de prueba deben tener target/test-classes también en el proyecto web, y así sucesivamente.

El uso de esta configuración le permitirá ejecutar pruebas unitarias en eclipse.

Solo un consejo más, si las pruebas de su proyecto web requieren algunos archivos de configuración que están debajo de los recursos, asegúrese de incluir esa carpeta como carpeta de origen y realizar la configuración de ruta de comstackción adecuada.

Espero eso ayude.

¡El enfoque de Carlos ayudó! Eclipse – java.lang.ClassNotFoundException

Intente verificar el classpath de la configuración de ejecución de junit:

  1. Abra sus configuraciones de ejecución
  2. Haga clic en jUnit-Test que desea iniciar
  3. ve a la pestaña classpath
  4. Intente agregar una carpeta (haga clic en las entradas de usuario, haga clic en Avanzado, haga clic en agregar carpetas, haga clic en Aceptar y busque la carpeta de salida para sus clases de prueba (las que encuentre en projektproperties ruta de comstackción java, fuente))

funciona para mi.

su classpath de comstackción es correcto, por lo que puede comstackr. el classpath para su JUnit necesita ser verificado. ve al menú Ejecutar y elige ‘Abrir diálogo de ejecución’. allí deberías ver un árbol a la izquierda con JUnit como una opción. abra ese nodo y encuentre y seleccione su prueba. en el panel derecho verá una pestaña para classpath. Eche un vistazo para asegurarse de que se encuentre su clase que la prueba intenta crear una instancia.

editar:

esto parece ser un problema con maven y su comportamiento después de que un lanzamiento cambió las carpetas de salida de Eclipse predeterminadas. He visto soluciones descritas donde

  • colocando maven en el bootclasspath ARRIBA de las jre works, o
  • corriendo mvn clean test hace el truco o
  • actualizar todos sus proyectos de eclipse, lo que provoca una reconstrucción corrige el problema
  • ir a su proyecto y seleccionar Maven-> Actualizar configuración resolver el problema

con los primeros tres, hubo informes de recurrencia del problema. el último me queda mejor, pero si no funciona, intente con los demás.

aquí y aquí hay algo de información

El problema puede estar perdiendo el archivo de clase en su carpeta de comstackción. Una solución es limpiar el proyecto y reconstruirlo.

Esta fue mi solución al problema. Por supuesto, muchas cosas pueden causar que ocurra. Para mí fue que Maven2 (no el complemento para Eclipse) estaba configurando el perfil de eclipse para utilizar un constructor diferente (aspectJ) pero no tenía el complemento en eclipse./

http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html

Saludos Ramon Buckland

Aquí hay muchas sugerencias complicadas.

He encontrado este problema varias veces con proyectos de Maven después de mover los recursos arrastrando y soltando, o realizando refactorizaciones de nombres de clases.

Si esto ocurre, simplemente copie (no mueva) el problema Caso de prueba ( .java ) a través de la terminal / buscador de archivos a otra ubicación, right-click -> Delete en Eclipse y elija eliminar en el disco cuando se le dé la opción, mueva / copie el copiado en la ubicación original del archivo, luego seleccione su proyecto en Eclipse y presione F5 para actualizar los recursos.

Esto es rápido y fácil de hacer, y siempre solucionó el problema de forma permanente.

¡Tenía exactamente el mismo problema pero lo descubrí! Vaya a su archivo de proyecto y haga clic derecho sobre él, luego haga clic en Refresh o presione F5. Entonces intenta y ejecuta. Si todavía no funciona, olvídalo, ya que tuve el mismo problema EXACTO y solo significa que tu versión de Eclipse es basura.

Sachin tiene razón: incluso con la ruta de clase correcta, la pestaña de problemas mostrará que alguna dependencia o el recurso / proyecto tiene un error que debe corregirse para que Maven cree y cree clases automáticamente al crear o hacer un cambio en su clase de prueba .

“Hola,

Es muy viejo julio (que año) pero tuve el mismo problema.

El problema real encontró que eclipse no pudo generar el archivo de clase para el archivo java, classpath era correcto.

Vea la pestaña de problema y verifique si su proyecto falta algo / archivo. puede crear un nuevo proyecto y agregar archivos uno por uno y comstackrlos hasta que deje de comstackr y crear clases (consulte las clases en el espacio de trabajo / proj / bin / paquete / carpeta)

es extraño pero cierto, ecplise estaba fallando en la comstackción porque 4 de los 20 archivos Java estaban usando una sola imagen que faltaba. y como resultado, no se compiló ningún archivo java.

CLASSPATH no es un problema aquí “.

Tuvimos la excepción exacta (usando SpringSource Tools, tomcat, en Win7) y la causa fue que habíamos refabricado un nombre de archivo (renombrado como un archivo) de SubDomain.java a Subdomain.java (D vs d) y de alguna manera colisionó aunque SpringSource fue mostrando el nuevo nombre Subdomain.java. La solución fue eliminar el archivo (a través de SpringSource) y crearlo nuevamente bajo el nombre Subdomain.java y copiar y pegar su contenido anterior. Simple como eso.

Todo lo que hice fue Propiedades -> Ruta de comstackción de Java -> Ordenar y exportar -> Habilitar todas las casillas sin marcar -> Mover Junit hasta el final

Resuelvo esa ruta de Bulit —> libraries —> add library —> Junit check junit4

Hmm, parece un poco extraño, intenta ejecutarlo con la siguiente anotación en la parte superior de la clase:

 @RunWith(SpringJUnit4ClassRunner.class) public class UserDaoTest { } 

y dime cómo te va con eso.

Verifique que también tenga la comstackción habilitada automáticamente. Si quiere asegurarse de que sus clases de prueba se comstackn correctamente, borre la carpeta de destino de Maven (y cualquier carpeta bin que Eclipse pueda estar usando). ¿Estás utilizando m2eclipse también, ya que me parece un poco problemático?

La solución a mi problema que era similar: las libs no eran válidas. Si busca en el archivo .classpath del proyecto, verá las tags de clase de paquete de pruebas con la clave / valor kind = “lib”. Algunos de los míos fueron incorrectos.

No descubrí esto hasta que desactivé la configuración de Validación. Es decir, había tantos errores en los archivos JSP, etc., que los errores de la ruta de clases no eran evidentes (o incluso aparecían). Como resultado, no se comstackba nada en las carpetas de salida de destino, pero no había errores útiles sobre por qué.

haga clic en project->properties->Java build path->Source y compruebe que cada carpeta src sigue siendo válida existe o que se eliminó recientemente. Corrija cualquier ruta faltante o ruta incorrecta y reconstruya y ejecute la prueba. Arreglará el problema.

Intentó

 Link : [here][1] Open your run configurations Click on the jUnit-Test you want to start go to the classpath tab Try to add a folder (click on user entries, click on advanced, click on add folders,click on ok and search the outputfolder for your test classes(those you find under projektproperties java build path, source)) 

trabajado después

Maven 2 LifeCycle >> prueba

Había intentado todas las soluciones en esta página: actualizar proyecto, reconstruir, limpiar todos los proyectos, reiniciar Eclipse, volver a importar (incluso) los proyectos, reconstruir y actualizar. Nada funcionó. Lo que funcionó fue copiar la clase a un nuevo nombre que funciona bien, extraño pero cierto.

Después de aguantar esto por un tiempo, simplemente lo solucioné por:

  1. A través del menú Run
  2. Seleccione Run Configurations
  3. Elija la configuración de ejecución que está asociada a su prueba de unidad.
  4. Eliminar la entrada de la Run Configuration presionando eliminar o hacer clic en la X roja.

Algo debe haber sido arruinado con la configuración de ejecución en caché.

Fui golpeado con este problema también y pude encontrar una solución suficiente para mi caso. Si su proyecto Eclipse tiene un archivo .classpath en la raíz del proyecto (véalo en la vista Navegador en lugar de la vista Explorador de paquetes), asegúrese de que su paleta de clase Maven aparezca antes de su paquete de clase JRE Container.

      

Si su proyecto no tiene un archivo .classpath, puede editar la ruta de comstackción Java de su proyecto para cambiar el orden y la exportación. Si su proyecto tiene el archivo .classpath y usted solo cambia su orden en la ruta de comstackción de Java, verá que el orden no se ve afectado y el problema continuará ocurriendo.

Y un project-> clean nunca hace daño a las cosas después de hacer el cambio.

Eliminar el proyecto de eclipse (no del disco duro) que de alguna manera es limpiar el área de trabajo y volver a importar el proyecto a eclipse me funcionó de nuevo.

Por lo general, este problema se produce al ejecutar la aplicación java herramienta no puede encontrar el archivo de clase.

Sobre todo en el proyecto maven, vemos este problema porque Eclipse-Maven está sincronizado . Para resolver este problema: Maven-> Update Configuration

¿Has intentado hacer clic derecho en la raíz de tu proyecto, seleccionar “propiedades” y asegurarte de que CLASSPATH sea correcta? Si recuerdo correctamente, así es como lo haces.

¿Algo sobre la forma en que Eclipse ejecuta pruebas unitarias que requieren agregar el jAR junit al tiempo de ejecución CLASSPATH de una manera especial?

Yo uso IntelliJ, entonces no tengo estos problemas.

Verificaría Eclipse yo mismo, pero prefiero no tenerlo en mi escritorio.

Señale corregir JDK desde Windows> Preferencias> Java> JRE instalado.

No apunte a jre, señale un JDK apropiado. Apunté a JDK 1.6U29 y actualicé el proyecto.

En lo sucesivo, el problema ya no existe y las Pruebas jUnit funcionan bien.

Gracias,
-Tapas

Me he encontrado con un mismo error en Eclipse recientemente, es decir, el Eclipse IDE no pudo encontrar la clase de prueba de la Unidad, sin importar cómo cambie las configuraciones. Aprendiendo de las publicaciones anteriores aquí y en otros sitios web, he comprobado y verificado tres veces la ruta de clase y la información de origen, y moví hacia arriba y hacia abajo la carpeta de origen y las bibliotecas, tanto en “Ejecutar configuración” como en “Java Build Path “config windows, y también limpié el proyecto y lo reconstruí, pero ninguno de los trucos funciona para mí. El proyecto específico de Java es un proyecto ANT comstackdo antiguo y tiene muchos archivos jar incluidos en la biblioteca de Eclipse.

Luego, cambié la clase de prueba unitaria para agregar un método main () y hago clic derecho en “Ejecutar como” una aplicación Java en lugar de una prueba JUnit, y de repente, Eclipse parece despertar e identificar la clase correctamente. Después, lo cambié a una aplicación de prueba de la Unidad, y todavía está funcionando.

Esto parece ser un error en Eclipse, supongo que la gran cantidad de bibliotecas (> 260) puede confundir la capacidad de la JVM para ubicar mi clase JUnit.

Asegúrese de que la configuración de inicio de la prueba NO contenga las siguientes líneas, O intente habilitar la administración de dependencias automática de Maven.

   

Intenté todo lo que leí en esta larga publicación e, increíblemente, lo que funcionó para mí fue, en lugar de hacer clic en la clase de prueba y seleccionar Run as JUnit test , hacer clic en el método de prueba y ejecutar como JUnit test . ¿No tengo ni idea de porqué?

La prueba JUnit desde dentro de eclipse también me dio NoClassDefFoundError. Ejecutar ‘mvn clean test’ desde la línea de comandos me dio el siguiente error en varios archivos: encabezado LOC no válido (firma incorrecta) Eliminar estos archivos jar del repository local m2 y ejecutar ‘mvn clean test’ de nuevo resolvió mi problema.

Yo tuve el mismo problema. Todo lo que hice fue,

yo). Artefactos de Eclipse generados

mvn clean eclipse:eclipse

ii). Actualice el proyecto y vuelva a ejecutar su prueba junit. Debería funcionar bien

Además, DOUBLE-CHECK el dialogo de eclipse “Web Deployment Assembly”.

Esto se puede encontrar: Propiedades del proyecto-> Ensamblaje de implementación.

Recientemente tuve un plugin de eclipse para modificar uno de mis proyectos web, y agregó ~ misteriosamente ~ agregó los directorios de prueba maven / src / test / java, / src / test / resources al ensamblado de implementación. UGGGG !!!

Por eso mi proyecto funcionó bien cuando construí e implementé maven directamente a tomcat, no ClassNotFoundExceptions … Sin embargo, cuando lo implementé a través de Eclipse, Whammo !! Empiezo a recibir ClassNotFoundExceptions porque el TestCode se está implementando.

Eric

Eso significa que tu pom.xml tiene problemas sin resolver. Abra la vista de problemas para resolver en consecuencia. Entonces podrá ejecutar los casos de prueba con éxito sin encontrar el classnotfoundexception.

Cambiando el orden de los artefactos de la ruta de clase en la ruta de comstackción de Java lo resolvió por mí.

  1. Haga clic derecho en el proyecto y vaya a la ruta de comstackción del proyecto.
  2. Vaya a la pestaña Ordenar y exportar y mueva la biblioteca del sistema JRE a las fonts.

Esto debería arreglarlo.

JUnit 4.4 no es compatible con la integración JMockit / JUnit. Solo se admiten las versiones 4.5 o posteriores.