Al intentar iniciar mi JUnit-Test desde Eclipse, obtengo una "ClassNotFoundException". Al ejecutar "mvn test" desde la consola, todo funciona bien. Además, no se han informado problemas en Eclipse.
La estructura de mi proyecto es la siguiente:
- proyecto principal (pom-packaging)
- Proyecto web (war-packaging - mi JUnit-test está aquí)
- Proyecto Flex
- Proyecto de configuración
editar: ¿Cómo no se puede encontrar la clase? Es una simple aplicación HelloWorld sin bibliotecas especiales.
Aquí está la configuración de ejecución de mi JUnit: texto alternativo http://www.walkner.biz/_temp/runconfig.png
Testclass (pero como dije; tampoco funciona con un simple HelloWorld ...):
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("", ""));
}
}
Respuestas:
Me he encontrado con esa situación varias veces y, después de muchos intentos, encontré la solución.
Verifique la ruta de construcción de su proyecto y habilite 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 usaría maven.
Por ejemplo, su proyecto web
src/main/java
debe tenertarget/classes
bajo el proyecto web, las clases de pruebatarget/test-classes
también deben tener bajo el proyecto web y así.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 se encuentran debajo de los recursos, asegúrese de incluir esa carpeta como carpeta de origen y de realizar la configuración de ruta de compilación adecuada.
Espero eso ayude.
fuente
@Ignore
todo el lugar y atajos gui!¡El acercamiento de Carlos ayudó! Eclipse: java.lang.ClassNotFoundException
Intente verificar la ruta de clase de la configuración de ejecución de junit:
funciona para mi.
fuente
su ruta de clase de compilación es correcta, por lo que puede compilar. el classpath para su JUnit necesita ser verificado. vaya al menú Ejecutar y elija 'abrir diálogo de ejecución'. allí debería ver un árbol a la izquierda con JUnit como opción. abra ese nodo y busque y seleccione su prueba. en el panel derecho verá una pestaña para classpath. eche un vistazo para asegurarse de que se encuentre la clase que la prueba está intentando crear.
editar:
esto parece ser un problema con maven y su comportamiento después de un lanzamiento cambió las carpetas de salida predeterminadas de Eclipse. he visto soluciones descritas donde
mvn clean test
hace el truco ocon los tres primeros, hubo informes del problema recurrente. el último me parece mejor, pero si no funciona, intente con los demás.
aquí y aquí hay algo de información
fuente
El problema puede ser que falte el archivo de clase en su carpeta de compilación. Una solución es limpiar el proyecto y reconstruirlo.
fuente
Habilitando [x] Use JAR temporal para especificar classpath (para evitar limitaciones de longitud de classpath) dentro de la pestaña Classpath de la configuración Ejecutar me resultó útil.
Si su proyecto es enorme y tiene muchas dependencias de otros proyectos hermanos y dependencias de maven, puede alcanzar las limitaciones de longitud de classpath y esta parece ser la única solución (además de hacer que el directorio de su repositorio local de maven sea más corto (el nuestro ya comienza) en c: / m2)
fuente
Aquí hay muchas sugerencias complicadas.
Me he encontrado con este problema varias veces con los proyectos de Maven después de mover recursos arrastrando y soltando, o refactorizando los nombres de las clases.
Si esto ocurre, simplemente copie (no mueva) el caso de prueba problemático (
.java
) a través del terminal / navegador de archivos a otra ubicación,right-click -> Delete
en Eclipse y elija eliminar en el disco cuando se le presente la opción, mueva / copie el archivo copiado a la ubicación del archivo original, luego seleccione su proyecto en Eclipse y presione F5 para actualizar los recursos.Esto es rápido y fácil de hacer, y siempre me ha solucionado el problema de forma permanente.
fuente
Tuve exactamente el mismo problema, ¡pero lo resolví! Vaya a su archivo de proyecto y haga clic derecho sobre él, luego haga clic
Refresh
o presione F5. Luego intente ejecutarlo. Si aún no funciona, olvídelo, ya que tuve EXACTO el mismo problema y solo significa que tu versión de Eclipse es basura.fuente
Esta fue mi solución al problema. Por supuesto, muchas cosas pueden provocarlo. Para mí fue que Maven2 (no el complemento para Eclipse) estaba configurando el perfil de eclipse para usar 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
fuente
Sachin tiene razón: incluso con la ruta de clases correcta, la pestaña de problemas mostrará que alguna dependencia o el recurso / proyecto tiene un error que debe corregirse para que maven pueda construir y crear clases automáticamente cuando crea o hace un cambio en su clase de prueba .
"Hola,
Es julio muy antiguo (qué año) pero tuve el mismo problema.
El problema real encontró que eclipse no pudo generar un archivo de clase para el archivo java, classpath era correcto.
Vea la pestaña de problemas y verifique si a su proyecto le falta algo / archivo. puede crear un nuevo proyecto y agregar archivos uno por uno y compilarlos hasta que deje de compilar y crear clases (consulte el espacio de trabajo / proj / bin / paquete / carpeta para ver las clases)
Su extraño pero cierto, ecplise estaba fallando en la conformidad porque 4 de 20 archivos java usaban una sola imagen que faltaba. y como resultado, no se compiló ninguno de los archivos java.
CLASSPATH no es un problema aquí ".
fuente
Tuvimos la excepción exacta (usando SpringSource Tools, tomcat, en Win7) y la causa fue que habíamos refactorizado un nombre de archivo (renombrado un archivo) de SubDomain.java a Subdomain.java (D vs d) y de alguna manera chocó aunque SpringSource estaba mostrando el nuevo nombre Subdomain.java. La solución fue eliminar el archivo (a través de SpringSource) y volver a crearlo con el nombre Subdomain.java y copiar y pegar su contenido anterior. Simple como eso.
fuente
Resuelvo esa ruta Bulit ---> bibliotecas ---> agregar biblioteca ---> Junit check junit4
fuente
haga clic en
project->properties->Java build path->Source
y verifique que cadasrc
carpeta aún sea válida, exista o se haya eliminado recientemente. Corrija cualquier ruta que falte o una ruta incorrecta y reconstruya y ejecute la prueba. Arreglará el problema.fuente
Todo lo que hice fue Propiedades -> Ruta de compilación de Java -> Ordenar y exportar -> Activar todas las casillas sin marcar -> moví Junit completamente hacia arriba
fuente
Intentó
trabajado después
Maven 2 LifeCycle >> prueba
fuente
Probé todas las soluciones en esta página: actualizar el proyecto, reconstruir, limpiar todos los proyectos, reiniciar Eclipse, volver a importar (incluso) los proyectos, reconstruir maven 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, lo solucioné:
Run
menúRun Configurations
Run Configuration
presionando eliminar o haciendo clic en la X roja.Algo debe haberse estropeado con la configuración de ejecución en caché.
fuente
Eliminar el proyecto de eclipse (no del disco duro) que de alguna manera es limpiar el espacio de trabajo y reimportar el proyecto a eclipse nuevamente funcionó para mí.
fuente
Por lo general, este problema ocurre mientras se ejecuta la
java
herramienta de aplicación Java y no se puede encontrar el archivo de clase.Principalmente en el proyecto maven, vemos este problema porque el problema de sincronización de Eclipse-Maven . Para solucionar este problema: Maven-> Actualizar configuración
fuente
¿Ha intentado hacer clic derecho en la raíz de su proyecto, seleccionar "propiedades" y asegurarse de que CLASSPATH sea correcto? Si mal no recuerdo, así es como lo haces.
¿Algo sobre la forma en que Eclipse ejecuta las pruebas unitarias que requiera que agregue junit JAR al tiempo de ejecución CLASSPATH de una manera especial?
Yo uso IntelliJ, así que no tengo estos problemas.
Verificaría Eclipse yo mismo, pero prefiero no tenerlo en mi escritorio.
fuente
Mmm, parece un poco extraño, intente ejecutarlo con la siguiente anotación en la parte superior de la clase:
y déjame saber cómo te va.
Compruebe que también haya habilitado la compilación automáticamente. Si desea asegurarse de que sus clases de prueba se estén compilando correctamente, borre la carpeta de destino de Maven (y cualquier carpeta bin que Eclipse pueda estar usando). ¿Está utilizando m2eclipse también, ya que lo encuentro un poco problemático?
fuente
La solución a mi problema era similar: las bibliotecas no eran válidas. Si busca en el archivo .classpath del proyecto, verá etiquetas classpathentry con la clave / valor kind = "lib". Algunos de los míos eran 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 classpath no eran evidentes (o posiblemente ni aparecieran). Como resultado, no se estaba compilando nada en las carpetas de salida de destino, pero no hubo errores útiles sobre el motivo.
fuente
Apunte para corregir JDK desde Windows> Preferencias> Java> JRE instalado.
No apunte a jre, apunte a un JDK adecuado. Señalé JDK 1.6U29 y actualicé el proyecto.
De ahora en adelante, el problema desapareció y las pruebas de jUnit funcionan bien.
Gracias,
-Tapas
fuente
Recientemente me encontré con el mismo error en Eclipse, es decir, el IDE de Eclipse no pudo encontrar la clase de prueba de unidad sin importar cómo cambie las configuraciones. Aprendiendo de las publicaciones anteriores aquí y en otros sitios web, verifiqué dos veces y tres veces la ruta de clase y la información de la fuente, y moví hacia arriba y hacia abajo la carpeta de origen y las bibliotecas, tanto en la "Configuración de ejecución" como en la "Ruta de compilación de Java "config windows, y también limpié el proyecto y lo reconstruí, pero ninguno de los trucos me funciona. El proyecto Java específico es un antiguo proyecto compilado de ANT y tiene muchos frascos incluidos en la biblioteca de Eclipse.
Luego, cambié la clase de prueba unitaria para agregar un método main () y haga clic con el botón derecho en "Ejecutar como" una aplicación Java en lugar de la prueba JUnit, y de repente, Eclipse parece despertar e identificar la clase correctamente. Luego, lo cambié de nuevo a una aplicación de prueba de 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 localizar mi clase JUnit.
fuente
También tuve este problema y pude encontrar una solución suficiente para mi caso. Si su proyecto Eclipse tiene un archivo .classpath en la raíz de su proyecto (véalo en la vista del navegador en lugar de en la vista del Explorador de paquetes), asegúrese de que su patrón de clase de Maven aparezca antes que su patrón de clase de contenedor de JRE.
Si su proyecto no tiene un archivo .classpath, puede editar la ruta de compilación Java de su proyecto para cambiar el orden y la exportación. Si su proyecto tiene el archivo .classpath y solo cambia su orden en Java Build Path, verá que el orden no se ve afectado y el problema continuará ocurriendo.
Y un proyecto-> limpio nunca daña las cosas después de realizar el cambio.
fuente
Asegúrese de que su configuración de lanzamiento de prueba NO contenga las siguientes líneas, O intente habilitar la administración automatizada de dependencias de Maven.
fuente
Probé todo lo que leí en esta publicación larga y, 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 comoJUnit test
. ¿No tengo ni idea de porqué?fuente
La prueba JUnit desde el interior de eclipse también me dio NoClassDefFoundError. Ejecutar 'mvn clean test' desde la línea de comando me dio el siguiente error en varios frascos: encabezado LOC no válido (mala firma) Eliminar estos frascos del repositorio local m2 y ejecutar 'mvn clean test' nuevamente resolvió mi problema.
fuente
Yo tuve el mismo problema. Todo lo que hice fue
yo). Artefactos Eclipse generados
mvn clean eclipse:eclipse
ii). Actualice el proyecto y vuelva a ejecutar su prueba junit. Debería funcionar bien.
fuente
Además, COMPRUEBE DOBLE el cuadro de diálogo "Ensamblado de implementación web" del eclipse.
Esto se puede encontrar: Propiedades del proyecto-> Ensamblaje de implementación.
Recientemente, un complemento de eclipse modificó uno de mis proyectos web, y agregó ~ misteriosamente ~ agregó los directorios de prueba de maven / src / test / java, / src / test / resources al Ensamblado de implementación. UGGGG !!!
Es por eso que mi proyecto funcionó bien cuando construí e implementé solo maven en tomcat, sin ClassNotFoundExceptions ... Sin embargo, cuando hice la implementación a través de Eclipse, ¡¡Whammo !! Empiezo a recibir ClassNotFoundExceptions porque el TestCode se está implementando.
Eric
fuente
Eso significa que su pom.xml tiene problemas sin resolver. Abra la vista de problemas y resuelva en consecuencia. Entonces podrá ejecutar los casos de prueba con éxito sin encontrar la excepción classnotfoundexception.
fuente
Cambiar el orden de los artefactos de classpath en Java Build Path lo resolvió para mí.
Esto debería arreglarlo.
fuente