View Full Version : AIUTO!Problema con il Java
:muro:
Ciao, scusatemi il disturbo, ma non so proprio dove sbattere la testa... Ho un problema con il java... Ho la versione J2SDK 1.4.1, ho scritto un semplicissimo programma:
class ciao2
{
public static void main(String argv[]) {
System.out.println("ciao");
}
}
e l'ho salvato in ciao2.java, l'ho compilato con: javac ciao2.java senza che mi segnalasse nessun errore e quando lo lancio scrivendo:
java ciao2
mi da:
Exception in thread "main" java.lang.NoClassDefFoundError:ciao2
NON RIESCO A CAPIRE DOVE SBAGLIO AIUTOOOOOO!!!
Grazie mille
dr.stein
09-04-2003, 18:06
Originally posted by "sampei3"
public static void main(String argv[])
e' qui l'errore....
deve essere:
public static void main(String[] args)
le parentesi quadre te le riconoscerebbe ugualmente, ma e' argv che e' sbagliato, la variabile corretta e' args
è lo stesso argv o args
a me funziona senza problemi quel pezzo di codice che hai scritto
Bilancino
09-04-2003, 18:13
A me funziona perfettamente :D.
Ciao
Hai inserito la direttoty di compilazione nel classpath?
Sei sicuro di avere scritto esattamente lo stesso nome per la classe e il file?
La classe è dentro ad un package?
:muro:
no la classe non è in package. Si sono sicuro che il nome della classe e il nome del file coincidono.
Cos'è il classpath?
Ragazzi, ma perchè non funziona?Da cosa può dipendere?
Puo essere colpa del mio Pc?Cosa devo fare?
AIUTOOO!!!!!
rilassati è un problema di CLASSPATH come ti hanno già detto.
devi mettere una variabile di ambiente, chiamata CLASSPATH, con questo valore:
.;c:\java
suppenendo che il tuo java SDK sia nella cartella c:\java
se ci dici che sistema operativo hai magari ti spieghiamo come mettere la variabile di ambiente
Originally posted by "dr.stein"
e' qui l'errore....
deve essere:
public static void main(String[] args)
le parentesi quadre te le riconoscerebbe ugualmente, ma e' argv che e' sbagliato, la variabile corretta e' args
Assolutamente falso :D String args[] o String[] args è assolutamente equivalente. e anche argv va bene.
Come ti è stato detto il problema è nel CLASSPATH. Un trucco: invece di specificare la directory, metti
set CLASSPATH=.; il punto indica la directory corrente .
Originally posted by "ri"
public class provaAnche questo: assolutamente falso...
il codice va bene
devi specificare al compilatore la directory in cui hai installato l'ambiente java...
se ci dici che compilatore usi magari qualcuno te lo sa dire con precisione
per esempio in JCreator devi fare Configure>Options>JDK Profiles click su new e poi aggiungi la directory in cui hai installato il java
Pretorius
10-04-2003, 18:15
Ho da poco fatto la tesi in Java. La risposta giusta è quella di CN73 che appare anche sul libro Java 2 di Horstmann e Cornell (che ti consiglio).
Dare consigli sbagliati a uno che si avvicina ad un nuovo linguaggio può rendergli la cosa abbastanza difficile, non vi pare?
:eek: Complimenti laureato!!! :D
In che cosa sei dottore....???
Siete dei GRANDI!!!
Ringrazio tutti per le risposte ma in particolare Pretorius, Cn73, e recoil, facendo come avete detto voi il programma ha girato senza problemi...
posso disturbarvi un'altra volta?
CHE COSA è IL CLASSPATH?Perchè prima non girava ?che cosa è cambiato dopo che ho scritto:
set CLASSPATH=. ?
GRAZIE MILLE
Allora il CLASSPATH è una variabile di ambiente utile alla JRE (e anche per compilare).
CLASSPATH:
Regola: una classe viene cercata nella sottodirectory corrispondente a partire dalle directory nel classpath
Vediamo adesso le regole che vengono utilizzate per localizzare una classe quando questa viene richiesta. Abbiamo visto che Java carica le classi in memoria quando qualcuno vi fa riferimento. Le classi hanno un nome gerarchico che comprende il loro package. Il package serve a anche per indicare in quale sotto directory bisogna cercare la classe. Le directory da cui parte la ricerca sono elencate nel CLASSPATH. Questo è un parametro che viene fornito all'interprete sulla riga di comando oppure usando lo variabile di ambiente CLASSPATH.
se CLASSPATH=c:\java;c:\java\lib
allora ad es java.util.Vector viene cercata in:
1. c:\java\lib\java\util\Vector.class
2. c:\java\util\Vector.class
Quindi se io faccio riferimento alla classe java.util.Vector e ho nel CLASSPATH le directory C:\java e C:\java\lib, si controllerà che non esista un file C:\Java\java\util\Vector.class o un file C:\Java\lib\java\util\Vector.class. Fare attenzione che questo meccanismo a volte sfugge ai principianti.
il package di default (senza dichiarazione di package) non ha una sottodirectory
le classi senza package vengono cercate nelle directory del classpath
Il package di default è quello che si ha se si ha omesso la dichiarazione package, corrisponde alla radice di ogni classe nel CLASSPATH.
in pratica perchè prima non te lo eseguiva e poi con set CLASSPATH=.; si. Perchè gli hai detto di cercare nella directory corrente che è proprio quella che conteneva il ciao2.class!
Originally posted by "Pretorius"
Dare consigli sbagliati a uno che si avvicina ad un nuovo linguaggio può rendergli la cosa abbastanza difficile, non vi pare?
Hai perfettamente ragione, è un po come succede nell'hw quando uno ha un freeze e gli consigliano di cambiare alimentatore, provare un'altra RAM, saldare la tale resistenza... :D
Originally posted by "Pretorius"
Dare consigli sbagliati a uno che si avvicina ad un nuovo linguaggio può rendergli la cosa abbastanza difficile, non vi pare?
beh, senza dubbio questo è giusto, però non credo che la gente dia consigli sbagliati apposta, cioè se uno dice una cosa è perchè è convinto che sia giusta...altrimenti i forum non avrebbero utilità
Questo è vero...però devi capire una cosa: senza offesa per nessuno queste cose sono davvero basilari. Se ci si confonde su questi concetti, è finita, non si va + avanti. In questo caso dare consigli sbagliati è davvero poco istruttivo.
Non voglio sembrare antipatico ;) , ci sono un mucchio di cose che non so, anche su Java :D
Pretorius
11-04-2003, 18:39
Per Soalle: non mi va di rendere pubblico il mio titolo di studio ;) ma sappi che ho studiato a Torino..... Comunque di questi tempi è dura trovare lavoro anche con una "buona" laurea :( .
Per TheFrog: hai ragione in generale. Quello che ti faccio notare è solo che nel caso particolare di una persona che inizia, dargli un indizio sbagliato può essere molto più dannoso che nel caso di un consiglio ad un "esperto". Ti dico questo perchè quel problema di Java lo ho avuto anche io (credo sia comune a chi vuole subito mettersi a smanettarci) e mi sono sentito dire cose che mi hanno fatto perdere tempo. Mi ricordo ancora uno che mi disse che era un problema di "oggetti remoti", forse solo per dire qualcosa.
Comunque tutti facciamo quello che possiamo e sanz'altro la volontà di aiutare deve essere sempre lodata, indipendentemente dal risultato, quella di dire sempre qualcosa per farsi vedere saccenti, no.
Grazie mille, ho capito perfettamente!!!
Siete dei GRANDI
Originally posted by "Pretorius"
Per Soalle: non mi va di rendere pubblico il mio titolo di studio ;) ma sappi che ho studiato a Torino..... Comunque di questi tempi è dura trovare lavoro anche con una "buona" laurea :( .
:eek: :eek: :eek: :eek: :eek: :eek: ;) :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.