Salve a tutti il mio problem è probilmente molto banale:
Sto facendo un progetto che consiene diverse classi.
Premetto che uso eclipse.
La struttura è la seguente:
CartellaPrincipale
---CartellaMain
------CartellaSecondaria1
------CartellaSecondaria2
dove:
CartellaPrincipale: equivale alla radice. per intenderci al (default package) del progetto.
Ho creato un package interno alla cartella principale (CartellaMain) per mettere il main e fare scomparire il "default package" dalla struttura di eclispe.
il programma funziona se lo mando in esecuzione da eclipse ma se tento di eseguirlo da terminale mi da questo errore:
per eseguirlo da terminale mi porto prima nella cartella CartellaMain (ovviamente della parte del bin dove ci sono i file compilati) ed eseguo java nomeClasseCheEseguocodice:Exception in thread "main" java.lang.NoClassDefFoundError: nomeClasseCheEseguo (wrong name: CartellaMain/nomeClasseCheEseguo)
Dopo aver fatto alcune ricerche in internet ho compreso che questo errore è relativo al fatto che il classpath non punta alla cartella e bisogna aggiungere allo stesso la cartella corrente (.). Ma le variabili sono settate bene e quello che ho potuto comprendere dopo alcune prove è che portando il main nella cartellaPrincipale (default pacjkage di eclipse) il programma parte.
Da un punto di vista strutturale, mettere il main nella cartella radice mi sembra ovvio. Ma vi chiedo:
è cosi che si fa (cioè è normale tenere il default package)? il main deve per forza stare li?
oppure posso creare una cartella sotto la radice e mettere il main (magari modificando la variabile CLASSPATH ma in questo modo funzionerà sugli altri pc)?
Il problema (se cosi lo si può chiamare) mi si verifica su ubuntu 12.04 e su xp
grazie tante