PDA

View Full Version : Java..Non mi lancia più niente!


SteR9
05-11-2003, 17:32
non riesco più a lanciare nessun programma con java
mi continua a dare questo errore
Exception in thread "main" java.lang.NoClassDefFoundError:

non capisco perchè me lo fa con qualsiasi programma...
non ce la faccio più!

azrael
05-11-2003, 20:16
scusa, reinstalla le JDK e via! ;)

SteR9
05-11-2003, 20:18
Originariamente inviato da azrael
scusa, reinstalla le JDK e via! ;)
già fatto...ho provato anche più versioni ma niente da fare...non va!!!:muro: :muro: :muro:

recoil
05-11-2003, 20:42
dalla tua affermazione "non mi lancia più" devo dedurre che un tempo le cose funzionavano.
cosa hai fatto?
oppure mi sbaglio e non è mai andato nulla?

SteR9
05-11-2003, 21:21
Originariamente inviato da recoil
dalla tua affermazione "non mi lancia più" devo dedurre che un tempo le cose funzionavano.
cosa hai fatto?
oppure mi sbaglio e non è mai andato nulla?
infatti...un tempo le cose funzionavano...poi sono stato un pò di tempo(un paio di mesi) senza programmare in java oggi avevo bisogno di utilizzare un programma che avevo fatto e nn va...
però non ho la più pallida idea di cosa posso aver fatto...

PGI
05-11-2003, 21:42
Di fronte ad alcune bizzarrie è difficile dare una risposta ad hoc, ma io ci provo.
Hai provato a lanciare l'applicazione con il "java.exe" del JDK e con quello del JRE? Forse uno dei due funziona.
So che può sembrare una soluzione "strana", ma l'installazione del JDK introduce nel sistema due "java.exe", uno nella cartella JDK/bin e uno in "java/jre/bin". La configurazione del primo può essere diversa da quella del secondo (il JRE "pasticcia" il registro di sistema per le sue variabili, il jdk no, o almeno...credo). Una cosa simili a me succedeva ogni volta che installavo-disinstallavo JBuilder (che porta in dote un suo JDK). Per "decidere" quale "java.exe" usare è sufficiente cambiare la PATH direttamente dal prompt del dos

set path=c:\jdk\bin
java MiaClasse -> java.exe del JDK

set path=c:\programmi\java\jre\bin
java MiaClass -> java.exe del JRE.

Naturalmente il problema potrebbe essere anche meno "bizzarro", non è che puoi postare per intero la traccia dell'eccezione generata quando provi a lanciare il programma?

&Ciao.

cn73
05-11-2003, 23:02
Exception in thread "main" java.lang.NoClassDefFoundError

perchè non usi il motore di ricerca? o google? Sarai il 300esimo... E' UN PROBLEMA DI CLASSPATH!! Lo sai cos'è il CLASSPATH?? Ah già voi usate il JBuilder :mad:

recoil
05-11-2003, 23:11
ci avevo pensato anche io ma avevo il dubbio che si trattase d'altro perché una volta gli funzionava quindi ero convinto che sapesse cos'è il CLASSPATH. probabilmente il problema è proprio questo

LukeHack
06-11-2003, 00:20
supponiamo che la classe pippo contenga il metodo main()
e che ti trovi nella sua directory...prova a scrivere:

java -cp . pippo

scommetti che funziona?:D

cn73
06-11-2003, 11:12
Originariamente inviato da LukeHack
supponiamo che la classe pippo contenga il metodo main()
e che ti trovi nella sua directory...prova a scrivere:

java -cp . pippo

scommetti che funziona?:D Molto + logico settare il CLASSPATH;


SET CLASSPATH=.

cn73
06-11-2003, 11:13
Originariamente inviato da recoil
ci avevo pensato anche io ma avevo il dubbio che si trattase d'altro perché una volta gli funzionava quindi ero convinto che sapesse cos'è il CLASSPATH. probabilmente il problema è proprio questo Gli funzionava perchè usava JBuilder...probabilmente avrà cambiato qualche impostazione del progetto senza accorgersene... e naturalmente non sapendo cos'è il CLASSPATH non ne sarebbe mai uscito.

recoil
06-11-2003, 11:27
Originariamente inviato da cn73
Gli funzionava perchè usava JBuilder...probabilmente avrà cambiato qualche impostazione del progetto senza accorgersene... e naturalmente non sapendo cos'è il CLASSPATH non ne sarebbe mai uscito.

azz non sopporto i tool come JBuilder. hanno sicuramente i loro vantaggi ma per iniziare a programmare li trovo fuorvianti :O

SteR9
06-11-2003, 13:54
allora avevo installato jbuilder ma non l'avevo mai usato,perchè non mi trovo...preferisco scrivere il codice a mano..
cmq avevo anche cercato su google e avevo letto sta cosa del classpath ma nn capivo cosa dovevo fare...cmq ora provo a mettere a posto il classpath...
grazie

SteR9
06-11-2003, 14:02
ho settato il classpath
C:\j2sdk_nb\j2sdk1.4.2\bin>set classpath=C:\Programmi\Java\j2re1.4.2_01\bin

ma non va lo stesso se invece faccio come ha detto lukeHack
va...
java -cp . pippo
come mai??

cn73
06-11-2003, 14:49
Perchè C:\Programmi\Java\j2re1.4.2_01\bin

non è il percorso per il CLASSPATH, ma al limite per il PATH!


Io ti ho detto di usare

SET CLASSPATH=.


fatti un batch da eseguire ogni volta in una sessione DOS:

rem Inserire qui il percorso della JVM
SET PATH=...
SET APP_HOME=...
set CLASSPATH=.;%APP_HOME%

SteR9
06-11-2003, 15:25
Originariamente inviato da cn73
Perchè C:\Programmi\Java\j2re1.4.2_01\bin

non è il percorso per il CLASSPATH, ma al limite per il PATH!


Io ti ho detto di usare

SET CLASSPATH=.


fatti un batch da eseguire ogni volta in una sessione DOS:

rem Inserire qui il percorso della JVM
SET PATH=...
SET APP_HOME=...
set CLASSPATH=.;%APP_HOME%

non ho ancora capito...
ho fatto il batch così

rem C:\Programmi\Java\j2re1.4.2_01\bin\java.exe
SET PATH=C:\Programmi\Java\j2re1.4.2_01\bin
SET APP_HOME=java.exe
set CLASSPATH=.;%APP_HOME%

ma non va quindi presumo che sia sbagliato...grazie!

recoil
06-11-2003, 15:42
Originariamente inviato da SteR9
ma non va lo stesso se invece faccio come ha detto lukeHack
va...
java -cp . pippo
come mai??

perché con l'argomento cp indichi il CLASSPATH, in questo caso è la directory corrente indicatan dal .
è molto meglio sistemare la variabile d'ambiente però! l'opzione cp può venire utile se devi usare le classi contenute in un jar (in questo caso indichi il percorso del file .jar dopo -cp)

Molz
06-11-2003, 16:06
set CLASSPATH=.;%APP_HOME%

Nn capisco xkè aggiungi java.exe al CLASSPATH.

il CLASSPATH è il percorso dove si trovano i file .class nn i .exe

X il resto dovrebbe andare, se nn va aggiungi 1 riga con scritto

java pippo

:D

cn73
06-11-2003, 16:56
Si scusa forse ti ho confuso io con la riga
SET APP_HOME=...
set CLASSPATH=.;%APP_HOME%


per me APP_HOME (appilcation Home) è una variabile che indica dove sono contenuti alcuni jar da includere nel CLASSPATH...era per farti vedere come si struttura un batch con un CLASSPATH complesso ;)

SteR9
06-11-2003, 17:19
quindi dovrebbe essere così?

rem C:\Programmi\Java\j2re1.4.2_01\bin\java.exe
SET PATH=C:\Programmi\Java\j2re1.4.2_01\bin
set CLASSPATH=.

cmq così non va :muro: :D

cn73
06-11-2003, 18:16
REM significa solo che quella riga non viene considerare (commento). Occhio a non lasciare spazi e scrivere esattamente come hai riportato. Devi lanciare il batch in una shell e dalla STESSA shell lancira java pippo. Questo perchè quando apri una shell crei un ambiente e le variabili (di ambiente appunto) valgono solo per quella sessione!

misterx
06-11-2003, 19:29
SET CLASSPATH= ..;C:\jsd.....\.....\


a me con un punto solo non trova le classi

recoil
06-11-2003, 19:59
Originariamente inviato da misterx
SET CLASSPATH= ..;C:\jsd.....\.....\


a me con un punto solo non trova le classi

forse ho capito, è perché il docente vi fa usare un package per I/O e quindi devi indicare il percorso dove trovarlo.

cn73
06-11-2003, 20:01
Originariamente inviato da misterx
SET CLASSPATH= ..;C:\jsd.....\.....\


a me con un punto solo non trova le classi

. (un solo punto) significa directory corrente.
.. (due punti) significa una directory indietro.

Perciò dipende da dove sono le tue classi rispetto a dove lanci java!!

cn73
06-11-2003, 20:02
Originariamente inviato da recoil
forse ho capito, è perché il docente vi fa usare un package per I/O e quindi devi indicare il percorso dove trovarlo.

No... con le ultime versioni di JDK si occupa automaticamente di risolvere quelle dipendenze. A meno che il package cui ti riferisci non sia "esterno" di seconde parti.

cn73
06-11-2003, 20:06
altra cosa importante: supponiamo che la mia classe Pippo che contiene il main appartenga a un package pluto.
Non riuscirò mai a eseguirla con java Pluto, anche se setto tutti i CLASSPATH di questo mondo. Dovrò posizionarmi nella directory superiore a pluto e eseguire con:
java pluto.Pippo

misterx
06-11-2003, 20:15
Originariamente inviato da recoil
forse ho capito, è perché il docente vi fa usare un package per I/O e quindi devi indicare il percorso dove trovarlo.


il docente non c'entra :p ognuno ha fatto un pò il cavolo che gli pare

io semplicemente rispetto al package sono sotto di un livello

ora che funziona non lo tocco più:)