View Full Version : Java..Non mi lancia più niente!
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ù!
scusa, reinstalla le JDK e via! ;)
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:
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?
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...
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.
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:
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
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=.
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.
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
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
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??
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%
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!
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)
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
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 ;)
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
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!
SET CLASSPATH= ..;C:\jsd.....\.....\
a me con un punto solo non trova le classi
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.
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!!
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.
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
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ù:)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.