[SemiRisolto][Java] Exception in thread "main" java.lang.NoClassDefFoundError

Configurazione e uso di IDE, editor, compilatori, in fase di programmazione.
Avatar utente
crisixk
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1402
Iscrizione: domenica 17 maggio 2009, 1:15
Località: Pontedera - Pisa
Contatti:

[SemiRisolto][Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da crisixk »

Salve raga  (b2b)

ho un problemino di runtime rispetto a un mio progetto .. vi spiego:

lavoro con Eclipse, ho 3 progetti:

JDUtil -> Progetto insieme di packages senza main con classi,interfacce,ecc. utili ai miei programmi;

XmlX -> Progetto insieme di packages senza main con classi, interfacce, annotazioni utili al parsing di classi in documenti xml;

Scopa -> Progetto con main di un programma che simula il gioco di carte napoletane Scopa  ;D

Ora, io imposto nel progetto JDUtil il progetto XmlX come progetto necessario alla compilazione dato che alcune classi di JDUtil lo utilizzano:
JDUtil(Menu) -> Project -> Properties -> Java Build Path -> Projects -> Add(XmlX)
allo stesso modo vorrei fare viceversa, volendo cioè utilizzare le classi,interfacce, ecc. di JDUtil nel progetto XmlX:
XmlX(Menu) -> Project -> Properties -> Java Build Path -> Projects -> Add(JDUtil)
infine voglio utilizzare classi, interfacce ecc. di JDUtil e di XmlX nel progetto Scopa:
Scopa(Menu) -> Project -> Properties -> Java Build Path -> Projects -> Add(JDUtil)
Scopa(Menu) -> Project -> Properties -> Java Build Path -> Projects -> Add(XmlX)
compilo e va bene ...

quando però tento di lanciare la classe Scopa.class con il main ottengo questi errori:
Exception in thread "main" java.lang.NoClassDefFoundError: Scopa
Caused by: java.lang.ClassNotFoundException: Scopa
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Scopa.  Program will exit.
se invece non inserisco nel progetto XmlX il progetto JDUtil come necessario, allora tutto fila liscio!!

Qualcuno ha idea di come potrei fare?  :(
Ultima modifica di crisixk il domenica 27 novembre 2011, 1:55, modificato 1 volta in totale.
Avvolte cio' che si crea per facilitarci la vita, ci libera dal ragionare ed insieme ci imprigiona in una sorta di limbo nel quale la coscienza è solo un limite, uno spreco di risorse e tempo. Cosa fa' la mia mano ?
... s'impara un passo alla volta ...
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da Zoff »

come lanci la classe Scopa?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
crisixk
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1402
Iscrizione: domenica 17 maggio 2009, 1:15
Località: Pontedera - Pisa
Contatti:

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da crisixk »

Zoff ha scritto: come lanci la classe Scopa?
la lancio direttamente con il comando "run" di Eclipse  ;D

non so quale sia la linea di comandi che Eclipse manda, il terminale per l'output che uso è quello di Eclipse, insomma non uso il terminale di ubuntu altrimenti ci spendo una vita a scrivere e controllare il codice, ma se vuoi cerco di capire dove reperire quello che Eclipse lancia ...

Ho trovato un modo per risolvere il problema, in pratica invece di aggiungere la libreria JDUtil come necessaria al progetto XmlX tramite:
XmlX(Menu) -> Project -> Properties -> Java Build Path -> Projects -> Add(JDUtil)
prima esporto il progetto JDUtil in un .jar e poi linko il .jar al progetto XmlX, così facendo tutto funziona  (b2b)

Il metodo dell' aggiungere i progetti necessari però è più comodo, infatti in quel modo la documentazione javadoc e il codice sono collegati direttamente da Eclipse, mentre se linko un .jar devo poi manualmente specificare dove si trova la documentazione e dove si trova il codice (che non esporto nel .jar) oltre al fatto che modificando il progetto JDUtil devo ogni volta riesportarlo in un .jar altrimenti il progetto XmlX lavora su un codice vecchio, non so se mi sono riuscito a spiegare  :-\

bohhh  ;D
Avvolte cio' che si crea per facilitarci la vita, ci libera dal ragionare ed insieme ci imprigiona in una sorta di limbo nel quale la coscienza è solo un limite, uno spreco di risorse e tempo. Cosa fa' la mia mano ?
... s'impara un passo alla volta ...
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da Zoff »

Per "comando run di Eclipse" intendi quello nel menu in alto?

Hai provato con Ctrl+F11 mentre sei nella classe Scopa o con tasto destro-->run->as java application?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
crisixk
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1402
Iscrizione: domenica 17 maggio 2009, 1:15
Località: Pontedera - Pisa
Contatti:

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da crisixk »

Zoff ha scritto: Per "comando run di Eclipse" intendi quello nel menu in alto?

Hai provato con Ctrl+F11 mentre sei nella classe Scopa o con tasto destro-->run->as java application?
zoff io uso Ctrl+F11 ... ma comunque tutte le tue opzioni danno lo stesso risultato ...  (yes)

come dicevo, linkando il .jar e non il progetto il problema non sussiste, quindi o io devo settare dei parametri che ignoro, oppure il problema è di questo tipo:

{
    project A, B, C

    A necessita di B
    B necessita di A

    C necessita di A che necessita di B
    C necessita di B che necessita di A
} == error!

ho schematizzato per capirci nella logica, mentre:
{
    project A, B, C
    jar A.jar

    A necessita di B
    B necessita di A.jar

    C necessita di A che necessita di B
    C necessita di B che necessita di A.jar
} == ok!

ps speriamo che in quest'altra sezione qualcuno ci senta  :P
Avvolte cio' che si crea per facilitarci la vita, ci libera dal ragionare ed insieme ci imprigiona in una sorta di limbo nel quale la coscienza è solo un limite, uno spreco di risorse e tempo. Cosa fa' la mia mano ?
... s'impara un passo alla volta ...
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da Zoff »

Già questo:
    A necessita di B
    B necessita di A

Mi suona malissimo, le dipendenze ricorsive sono pessime.

Secondo me per questo non compila.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
crisixk
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1402
Iscrizione: domenica 17 maggio 2009, 1:15
Località: Pontedera - Pisa
Contatti:

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da crisixk »

hmmm ... con il .jar risolvo, dici meglio che metta risolto e la finisca qui?

In realtà il package XmlX non usa nulla di JDUtil, ma volevo tenermela come potenzialità  (rotfl)
Avvolte cio' che si crea per facilitarci la vita, ci libera dal ragionare ed insieme ci imprigiona in una sorta di limbo nel quale la coscienza è solo un limite, uno spreco di risorse e tempo. Cosa fa' la mia mano ?
... s'impara un passo alla volta ...
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da Zoff »

se a te basta puoi mettere risolto

per risolvere il resto senza avere in mano il progetto IO non so dirti altro.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
elsco
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 350
Iscrizione: giovedì 19 giugno 2008, 12:46
Località: Napoli

Re: [Java] Exception in thread "main" java.lang.NoClassDefFoundError

Messaggio da elsco »

Zoff ha scritto: Già questo:
    A necessita di B
    B necessita di A

Mi suona malissimo, le dipendenze ricorsive sono pessime.

Secondo me per questo non compila.
D'accordo con Zoff...

Io avrei fatto un ulteriore progetto con dentro tutte le classi che sono utilizzate negli altri 3 progetti e l'avrei utilizzato come "libreria condivisa".

Inoltre avere i jar così ti comporta un'export del jar ogni volta che modifichi uno dei due progetti.

Ciao
Scrivi risposta

Ritorna a “Strumenti per la programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti