Newsgroup: it.comp.java
Titolo: Installato J2EE, non funziona + niente....

premessa: avevo (ho) già la JDK 1.4 Installata.
Ho appena installato la Enterprise Edition, e quando sono andato a provare
alcuni programmini, ho ricevuto l'errore
Exception in thread "main" java.lang.NoClassDefFoundError: NomeFile
Perché dovrebbe fare questo? Devo modificare qualcosa? Inoltre, aprendo una
applet con appletviewer, si aprono varie finestre (4) con la stessa applet,
invece che una sola! Che ho combinato?

precisazione: i programmini di cui parlo erano banali esercizi che avevo
fatto con il JDK...

 fatto con il JDK...
Anche io ho questo problema, ho installato però la j2sdk-1_4_0_01 (ho anche
installato Tomcat perché m'interessano particolarmente i JSP).
Volendo comunque imparare java ho provato a seguire uno dei corsi che si
possono scaricare...
Ho messo nel path il percorso C:\j2sdk1.4.0_01\bin e nel CLASSPATH
C:\j2sdk1.4.0_01\lib,
ho copiato il seguente programma (HelloWorld.java)
import java.io.*;
public class HelloWorld
{
 public static void main(String[] args)
 {
  System.out.println("Hello World");
 }
}
l'ho "compilato" con javac HelloWord.java e poi quando l'ho lanciato con
java HelloWorld, mi è comparso il fantomatico errore
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
Ho provato anche ad aggiungere una linea import java.lang.*; ma niente da
fare!
Domanda: ma è possibile riuscire a far andare questo java affinché si riesca
ad impararlo?
Grazie a tutti,
Paolo Ferraresi.

Dunque, ho appena scoperto che il problema si verifica solo con quei
programmi che funzionano solo con il main, senza richiamare alcuna classe
creata da me (non chiedetemi perché). Infatti, se ho delle classi nel mio
package, e le richiamo tramite un main esterno al package, funziona tutto a
meraviglia.
Il bello è che la EE non è nemmeno in path, quindi i comandi richiamati sono
sicuramente quelli della bin di JDK. Da cosa può dipendere?

 ha scritto nel messaggio
news:ai0hdm$cbc$1...@newsreader.mailgate.org...

Ciao, scusami ma io non ho capito come hai fatto! Sto imparando java e sono
alla prima lezione...
Ho fatto HelloWorld ma non mi va come riesci ad adattarlo tu per farlo
andare?
Mi fai un esempio pratico? Da come lo hai spiegato non ho capito niente...
ciao e grazie!

 ciao e grazie!
Se hai appena iniziato con Java, e non conosci altri linguaggi tipo C++,
dubito che la mia spiegazione possa esserti utile a qualcosa, cmq ci provo:
Diciamo che il mio package č la cartella Esercizi.
Esercizi\primo č un'altra cartella.
Nella cartella primo, scrivo la classe da cui istanziare l'oggetto:
package primo;
public class  hello;
{
        public hello(){
        System.out.println("Hello World!");
    }
}
nella cartella esercizi, creo il main vero e proprio:
import primo.*;
class ProvaMain
{
 public static void main(String[] args)
 {
  // istanzio l'oggetto della classe hello
hello oggetto = new hello();
 }
}
In questa maniera il programma viene eseguito. Credo dipenda dal fatto di
aver impostato un classpath, e quindi il package predefinito in cui java
mette le classi quando non ne specifichi uno non esista piů, ma non ne sono
affatto sicuro, anzi...

 ....
il ; dopo il public class hello è di troppo.
Comunque nel mio caso, anche con il modo che hai descritto, da lo stesso
errore!
Grazie lo stesso! Forse un giorno capirò come far funzionare anche un
semplice programma java.

 errore!
Hai impostato la variabile d'ambiente classpath? Deve puntare sul percorso
del tuo package (in questo caso, sarebbe stato set classpath = c:\esercizi).

> Perché dovrebbe fare questo?
In realtà... non lo fa...
Avete sicuramente sbagliato qualcos'altro... direi che non c'entra con
l'istallazione del J2SDKEE... controllate bene...

 l'istallazione del J2SDKEE... controllate bene...
Non hai un indizio da darmi, per caso? A proposito, sicuro di aver letto
tutta la discussione prima di rispondere? Ciao e grazie.

 ha scritto nel messaggio
news:ai19ic$p4n$1...@newsreader.mailgate.org...

Ciao, ogni volta che c'è quel main ecco che l'errore incombe, anche con il
tuo metodo (settando ovviamente il classpath).
Riesco però ad eseguire alcuni esempi di applet che si richiamano dalle
pagine web, e funzionano i JSP (da dentro Tomcat) fortuna che ero
interessato a questi... Il java lo imparerei solo per creare i JSP, perché
per i programmi che faccio il C++ è il n. 1!
Grazie lo stesso!
P.S. comunque non c'è tanta gente che conosce la soluzione definitiva a
questi problemi, evidentemente...


lascia stare il classpath , io non l'ho mai usato in vita mia
allora , nell'autoexec.bat io ci ho aggiunto nel path c:\jdk1.3\bin
fatto questo , vai da dos sotto la directory in cui c'è HelloWorld.class , e
da lì fai java HelloWorld.
deve funzionare per forza.
se non funziona le possibilità sono 2 : la classe non si chiama HelloWorld
(occhio a maiuscole e minuscole) il file non si chiama HelloWorld.class , ma
magari helloworld.class.
infatti l'errore che ti dà è "classe non trovata".
comunque ti consiglio di usare un editor tipo realj (
www.realj.com
) o
jcreator o meglio ancora gel (io mi ci trovo benissimo) all'indirizzo
http://www.gexperts.com/
.
questi programmi hanno di buono , oltre a essere free , di occuparsi di
tutte quelle cose pesanti tipo classpath , path , compilazione , etc.
in futuro per eseguire un programma java sotto windows ti converrà usare i
file jar , che possono essere lanciati con doppio click del mouse.
spero di esserti stato di aiuto
ciao

 ha scritto nel
messaggio news:ai1b2f$rt1$1...@lacerta.tiscalinet.it...

E invece hai sbagliato tu... Nel mio caso era sicuramente un bug... Ho
ribadito nella shell DOS il comando SET CLASSPATH=..... che avevo dato nelle
var di sistema... (avevo verificato, teoricamente non ve ne sarebbe stato
bisogno, era già così!), ho cancellato tutti i .class e ho ricompilato tutte
le mie prove... funzionavano tutte, senza bisogno di fare altre cose!!
La cosa curiosa è che chiudendo la shell e riaprendola, quindi finito
l'effetto del SET manuale, ricompila tutto e va bene, quindi devo dedurre
che fintanto che una compilazione non va a buon fine quell'eccezione sul
"main" da noia... Se non lo chiami questo un bug dimmi tu!

Sembrerebbe trattarsi di un problema tra il classpath e i main, a quanto
pare fanno a cazzotti tra di loro. Infatti, abbiamo questo problema anche al
lavoro. Tuttavia, se il main è esterno al package, tutto funziona.