Eclipse – java.lang.ClassNotFoundException

Quando provo ad avviare il mio JUnit-Test su Eclipse, ottengo un “ClassNotFoundException”. Quando si esegue “mvn test” dalla console, tutto funziona correttamente. Inoltre, non ci sono problemi segnalati in Eclipse.

La mia struttura di progetto è la seguente:

  • progetto genitore (pom-packaging)
    • Progetto web (war-packaging – il mio test JUnit è qui)
    • Progetto Flex
    • Progetto di configurazione

modifica: come può la class non essere trovata? È una semplice applicazione HelloWorld senza librerie speciali.

Ecco la mia configurazione di esecuzione di JUnit: alt text http://www.walkner.biz/_temp/runconfig.png


Test class (ma come ho già detto, non funziona nemmeno con HelloWorld semplice …):

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("", "")); } } 

Mi sono imbattuto in questa situazione diverse volte e, dopo molti tentativi, ho trovato la soluzione.

Controlla il percorso di costruzione del tuo progetto e abilita cartelle di output specifiche per ogni cartella. Passa uno per uno attraverso ciascuna cartella di origine del tuo progetto e imposta la cartella di output che userò Maven.

Ad esempio, src/main/java tuo progetto web dovrebbe avere target/classs nel progetto web, le classi di test dovrebbero avere classi target/test-classs anche nel progetto web e così via.

L’utilizzo di questa configurazione ti consentirà di eseguire test unitari in eclipse.

Solo un altro consiglio, se i test del tuo progetto web richiedono alcuni file di configurazione che sono sotto le risorse, assicurati di includere tale cartella come cartella di origine e di configurare correttamente il percorso di costruzione.

Spero che sia d’aiuto.

L’approccio di Carlos ha aiutato! Eclipse – java.lang.ClassNotFoundException

Prova a controllare il classpath della configurazione di esecuzione di junit:

  1. Apri le tue configurazioni di corsa
  2. Clicca sul jUnit-Test che vuoi iniziare
  3. vai alla scheda classpath
  4. Prova ad aggiungere una cartella (fai clic sulle voci dell’utente, fai clic su Avanzate, fai clic su Aggiungi cartelle, fai clic su OK e cerca la cartella di destinazione per le tue classi di test (quelle che trovi in ​​projektproperties percorso di sviluppo java, sorgente))

per me va bene.

il tuo classpath di build è corretto, ed è per questo che puoi compilare. il classpath per il tuo JUnit deve essere controllato. vai al menu Esegui e scegli “Apri finestra di dialogo Esegui”. in là dovresti vedere un albero a sinistra con JUnit come opzione. apri quel nodo e trova e seleziona il tuo test. nel pannello di destra verrà visualizzata una scheda per classpath. dai un’occhiata per assicurarti che la tua class che il test sta cercando di creare un’istanza possa essere trovata.

modificare:

questo sembra essere un problema con Maven e il suo comportamento dopo che una release ha cambiato le cartelle di output di Eclipse di default. ho visto soluzioni descritte dove

  • posizionare l’utente nel percorso di boot SOPRA il jre funziona, oppure
  • eseguire mvn clean test fa il trucco o
  • aggiornando tutti i progetti di eclipse, causando una ricostruzione che risolve il problema
  • andando al tuo progetto e selezionando Maven-> Aggiorna configurazione risolvi il problema

con i primi tre, ci sono state segnalazioni del problema ricorrenti. l’ultimo mi sembra migliore, ma se non funziona, prova gli altri.

qui e qui sono alcune informazioni

Il problema potrebbe essere la mancanza del file di class nella cartella di build. Una soluzione è pulire il progetto e ricostruirlo.

Questa era la mia soluzione al problema. Naturalmente, molte cose possono causare che si verifichi. Per me era che Maven2 (non il plugin per Eclipse) stava impostando il profilo di eclipse per usare un builder differente (aspettoJ) ma non avevo il plugin in eclipse./

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

Saluti Ramon Buckland

Ci sono molti suggerimenti contorti qui.

Ho riscontrato questo problema più volte con i progetti Maven dopo lo spostamento delle risorse in giro trascinando la selezione o eseguendo il refactoring dei nomi delle classi.

Se ciò si verifica, è sufficiente copiare (non spostare) il problema Test Case ( .java ) tramite il browser di terminale / file in un’altra posizione, right-click -> Delete in Eclipse e scegliere di eliminare su disco quando viene fornita l’opzione, spostare / copiare il copiare il file nel percorso del file originale, quindi selezionare il progetto in Eclipse e premere F5 per aggiornare le risorse.

Questo è veloce e facile da fare, e ha risolto il problema in modo permanente per me ogni volta.

Ho avuto lo stesso identico problema ma l’ho capito! Vai al tuo file di progetto e fai clic destro su di esso, quindi fai clic su Refresh o premi F5. Quindi prova ad eseguirlo. Se ancora non funziona, basta dimenticarlo, poiché ho avuto lo stesso problema ESATTAMENTE e significa semplicemente che la versione di Eclipse è spazzatura.

Sachin ha ragione: anche con il corretto percorso di class, la scheda dei problemi mostrerà che alcune dipendenze o il Risorsa / progetto ha un errore che deve essere corretto affinché Maven possa creare e creare automaticamente classi quando si crea o apporta una modifica nella propria class di test .

“Ciao,

È molto vecchio luglio (quale anno) ma ho avuto lo stesso problema.

Il problema effettivo ha rilevato che eclipse non era in grado di generare file di class per il file java, classpath era corretto.

Vedi la scheda problema e controlla se al tuo progetto manca qualcosa / file. puoi creare un nuovo proj e aggiungere file uno alla volta e costruirli finché non smette di compilare e creare classi (controlla lo spazio di lavoro / proj / bin / package / folder per le classi)

il suo strano ma vero, ecplise stava fallendo in compliation perché 4 di 20 file java utilizzavano una singola immagine che mancava. e come risultato nessuno dei file java è stato compilato.

CLASSPATH non è un problema qui. ”

Abbiamo avuto l’eccezione esatta (usando SpringSource Tools, tomcat, su Win7) e la causa era che avevamo refactored un nome di file (rinominato un file) da SubDomain.java a Subdomain.java (D vs d) e in qualche modo si scontrò anche se SpringSource era mostrando il nuovo nome Subdomain.java. La soluzione era eliminare il file (tramite SpringSource) e crearlo nuovamente sotto il nome Subdomain.java e copiare e incollare il suo contenuto precedente. Semplice come quella.

Tutto ciò che ho fatto è stato Proprietà -> Percorso build Java -> Ordina ed esporta -> Abilita tutte le caselle non selezionate -> spostato Junit fino in fondo

Risolvo il percorso Bulit —> librerie —> aggiungi libreria —> Junit check junit4

Hmm, sembra un po ‘bizzarro, prova a eseguirlo con la seguente annotazione in cima alla class:

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

e fammi sapere come te la cavi.

Verifica di aver anche abilitato automaticamente la build. Se si desidera assicurarsi che le classi di test vengano compilate correttamente, eliminare la cartella di destinazione di Maven (e qualsiasi cartella bin che può essere utilizzata da Eclipse). Stai usando anche m2eclipse, perché trovo che sia un po ‘problematico.

La soluzione al mio problema che era simile: le librerie erano invalide. Se cerchi nel file .classpath del progetto, vedrai i tag classpathentry con il tipo key / value = “lib”. Alcuni dei miei erano errati.

Non l’ho scoperto fino a quando non ho distriggersto le impostazioni di convalida. Cioè, ci sono stati così tanti errori nei file JSP, ecc., Che gli errori del classpath non erano evidenti (o forse addirittura mostrati). Di conseguenza, non veniva compilato nulla nelle cartelle di destinazione, ma non c’erano errori utili sul perché.

fare clic su project->properties->Java build path->Source e controllare che ogni cartella src sia ancora valida o rimossa di recente. Correggere qualsiasi percorso mancante o percorso errato e ribuild ed eseguire il test. Risolverà il problema.

Provato

 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 classs(those you find under projektproperties java build path, source)) 

lavorato dopo

Maven 2 LifeCycle >> test

Avevo provato tutte le soluzioni in questa pagina: aggiornamento progetto, ricostruzione, pulizia di tutti i progetti, riavvio di Eclipse, reimportazione (anche) dei progetti, ricostruzione di revisioni e aggiornamento. Niente ha funzionato Ciò che ha funzionato è stato copiare la class in un nuovo nome che funziona bene, bizzarro ma vero.

Dopo aver sopportato questo per un po ‘di tempo, l’ho appena risolto da:

  1. Tramite il menu Run
  2. Seleziona Run Configurations
  3. Scegli la configurazione dell’esecuzione associata al test dell’unità.
  4. Rimozione della voce dalla Run Configuration premendo delete o facendo clic sulla X rossa.

Qualcosa deve essere stato rovinato con la configurazione di esecuzione cache.

Sono stato colpito anche da questo problema e sono riuscito a trovare una soluzione sufficiente per il mio caso. Se il progetto Eclipse ha un file .classpath nella root del progetto (consultalo in Vista Navigatore invece di Vista Esplora pacchetti), assicurati che il tuo classpathentry Maven appaia prima del classpathentry del contenitore JRE.

      

Se il tuo progetto non ha un file .classpath, puoi modificare il percorso di costruzione Java del tuo progetto per cambiare Ordine ed Esporta. Se il tuo progetto ha il file .classpath e cambi solo l’ordine nel percorso di costruzione Java, vedrai che l’ordine non è influenzato e il problema continuerà a verificarsi.

E un progetto-> pulito non fa mai male alle cose dopo aver apportato il cambiamento.

Cancellare il progetto da eclipse (non da disco rigido) che in un certo modo è la pulizia dell’area di lavoro e reimportare il progetto in eclipse ha funzionato ancora per me.

Di solito questo problema si verifica durante l’esecuzione dello strumento java dell’applicazione java non riesce a trovare il file di class.

Principalmente nel progetto Maven vediamo questo problema perché il problema di sincronizzazione di Eclipse-Maven . Per risolvere questo problema: Maven-> Aggiorna configurazione

Hai provato a fare clic destro sulla radice del progetto, selezionando “proprietà” e assicurandoti che CLASSPATH sia corretto? Se ricordo bene, è così che lo fai.

Qualcosa sul modo in cui Eclipse esegue test unitari che richiedono di aggiungere il JAR junit al CLASSPATH di runtime in un modo speciale?

Io uso IntelliJ, quindi non ho questi problemi.

Controllerò io stesso Eclipse, ma preferisco non averlo sul mio desktop.

Indicare per correggere JDK da Windows> Preferenze> Java> JRE installato.

Non puntare a jre, puntare a un JDK corretto. Ho indicato JDK 1.6 U29 e aggiornato il progetto.

Di seguito, il problema è andato e jUnit I test stanno funzionando bene.

Grazie,
-Tapas

Recentemente ho riscontrato lo stesso errore in Eclipse, ovvero l’IDE Eclipse non è stato in grado di trovare la class di test dell’Unità indipendentemente da come modifico le configurazioni. Imparando dai post precedenti qui e in altri siti web, ho ricontrollato e verificato il classpath e le informazioni di origine, e spostato su e giù la cartella e le librerie di origine, sia in “Run Configuration” che in “Java Build Path”. “windows di configurazione, e ho anche pulito il progetto e lo ho ricostruito, ma nessuno dei trucchi funziona per me. Il progetto Java specifico è un vecchio progetto compilato ANT e contiene molti jar inclusi nella libreria Eclipse.

Quindi, ho modificato la class di test dell’unità per aggiungere un metodo main () e fare clic destro su “Esegui come” un’applicazione Java anziché su JUnit test, e improvvisamente, Eclipse sembra svegliarsi e ha identificato correttamente la class. Successivamente, l’ho ritriggersto in un’applicazione di test di unità e funziona ancora.

Questo sembra essere un bug in Eclipse, suppongo che il gran numero di librerie (> 260) possa confondere l’abilità della JVM di localizzare la mia class JUnit.

Assicurati che la configurazione di avvio del test NON contenga le seguenti righe, OPPURE prova ad abilitare la gestione delle dipendenze Maven automatizzata.

   

Ho provato tutto quello che ho letto in questo lungo post e, incredibilmente, quello che ha funzionato per me è stato, piuttosto che fare clic sulla class di test e selezionare Run as JUnit test , facendo clic sul metodo di test e eseguendo come JUnit test . Non ho idea del perché?

JUnit test dall’interno di eclipse mi ha dato anche NoClassDefFoundError. L’esecuzione di ‘mvn clean test’ dalla riga di comando mi ha dato il seguente errore su diversi giare: intestazione LOC non valida (firma errata) L’eliminazione di questi contenitori dal repository m2 locale e l’esecuzione di ‘mvn clean test’ ha risolto di nuovo il problema.

Ho avuto lo stesso problema. Tutto quello che ho fatto è stato,

io). Artefatti di Eclipse generati

mvn clean eclipse:eclipse

ii). Aggiorna il progetto e riesegui il test di junit. Dovrebbe funzionare bene.

Inoltre, DOPPIA CONTROLLA la finestra di dialogo “Web Deployment Assembly” di Eclipse.

Questo può essere trovato: Proprietà del progetto-> Assemblaggio di implementazione.

Recentemente ho avuto un plug-in di eclipse che modifica uno dei miei progetti web e ha aggiunto ~ misteriosamente ~ aggiunte le directory di test di maven / src / test / java, / src / test / resources al Deployment Assembly. UGGGG !!!

Questo è il motivo per cui il mio progetto ha funzionato bene quando ho creato e distribuito solo da Maven a Tomcat, non ClassNotFoundExceptions … Tuttavia, quando ho eseguito la distribuzione tramite Eclipse, Whammo !! Inizio a ottenere ClassNotFoundExceptions perché il TestCode viene distribuito.

Eric

Ciò significa che il tuo pom.xml ha problemi irrisolti. Aprire la vista dei problemi risolvere di conseguenza. Quindi sarai in grado di eseguire correttamente i test case senza incontrare la class non valida.

La modifica dell’ordine degli artefatti del percorso di class nel percorso di costruzione di Java ha risolto il problema per me.

  1. Fare clic con il tasto destro sul progetto e andare al percorso di creazione del progetto.
  2. Vai alla scheda, Ordina ed esporta e sposta la libreria di sistema JRE dopo i sorgenti.

Questo dovrebbe risolverlo.

JUnit 4.4 non è supportato dall’integrazione JMockit / JUnit. Solo le versioni 4.5 o successive sono supportate.