|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Nov 2004
Messaggi: 1494
|
Errore "inspiegabile" durante la compilazione di un programma Java
Ciao a tutti sto facendo un corso Java e ho scritto un semplice programmino (per me non lo è affatto magari per molti di voi sicuramente è molto semplice) solo che durante la compilazione il compilatore mi segnala due errori:
C:\EserciziJava>c:\jdk1.3.1_12\bin\javac MakePassword2.java MakePassword2.java:3: cannot resolve symbol symbol : class ConsoleReader location: class MakePassword2 { ConsoleReader c = new ConsoleReader(System.in); ^ MakePassword2.java:3: cannot resolve symbol symbol : class ConsoleReader location: class MakePassword2 { ConsoleReader c = new ConsoleReader(System.in); ^ 2 errors ....E IL FILE SORGENTE DA ME SCRITTO INVECE E': public class MakePassword2 { public static void main(String[] args) { ConsoleReader c = new ConsoleReader(System.in); System.out.println("Inserire il nome"); String firstName = c.readLine(); System.out.println("Inserire il cognome"); String lastName = c.readLine(); System.out.println("Inserire l’età"); int age = c.readInt(); String initials = firstName.substring(0, 1) + lastName.substring(0, 1); String pw = initials.toLowerCase() + age; System.out.println("La password è " + pw); } } So che la classe ConsoleReader non fa parte della libreria standard di Java e l'ho infatti scaricata a parte e copiata nella cartella dove risiede il file sorgente da me scritto ma nonostante ciò non riesco a capire come mai la compilazione non vada a buon fine.....sicuramente il motivo c'è ma non riesco proprio ad individuarlo nonostante le indicazioni del compilatore. Qualcuno di voi saprebbe aiutarmi? Grazie a tutti quelli che mi risponderanno Ciao! P.S. Ho già scritto in un altro forum su questo problema ma un utente mi ha detto che tale programma da me scritto a lui funzionava perfettamente (il che non mi dispiace affatto, ma non capisco come mai a me non funziona). Ho eseguito il programma identicamente a come mi ha detto tale utente e il risultato è che a lui funziona, a me no....... la versione di JDK che uso è la 1.3.1_12........probabile che sia tale versione che mi da problemi o nella quale si deve aggiungere un'istruzione nel codice sorgente per permettere al compilatore di capire che sto eseguendo un programma che richiede una classe esterna alla libreria standard? Non so....spero che qualcuno di voi sappia "delucidarmi". Vi ringrazio Ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
non è cha la classe ConsoleReader appartiene a un package e ti sei dimenticato di inserire l'import?
|
|
|
|
|
|
#3 | |
|
Registered User
Iscritto dal: Nov 2004
Messaggi: 1494
|
Quote:
Purtroppo non ho ancora risolto......... Ultima modifica di lightjay2000 : 28-11-2004 alle 20:04. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
non mi sono spiegato.
ConsoleReader non è parte delle librerie standard, ma potrebbe benissimo avere un package, potrebbe chiamarsi ad esempio it.qualcosa.ConsoleReader. Se così fosse nel codice devi riferirti col nome completo di package oppure aggiungere un: import it.qualcosa.ConsoleReader; all'inizio del tuo sorgente. |
|
|
|
|
|
#5 | |
|
Registered User
Iscritto dal: Nov 2004
Messaggi: 1494
|
Quote:
Ciao |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Però la cosa davvero strana è che l'altra persona che ha cercato di aiutarmi nell'altro forum ha copiato il codice che ho esposto prima nel file sorgente senza aggiungere nient'altro nel codice e a lui la compilazione mi ha detto che funzionava.[/quote]
mi posti in allegato la classe consolereader? ci provo anch'io e vediamo. |
|
|
|
|
|
#7 |
|
Registered User
Iscritto dal: Nov 2004
Messaggi: 1494
|
Ti ho allegato la classe; ti ringrazio molto per l'interessamento
Ultima modifica di lightjay2000 : 14-11-2008 alle 11:20. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
anche a me compila senza problemi. hai messo il file MakePassword2.java in una directory dove c'e' anche ConsoleReader.class e hai digitato da prompt di dos (posizionato in quella directory) : javac MakePassword2.java ? |
|
|
|
|
|
|
#9 | |
|
Registered User
Iscritto dal: Nov 2004
Messaggi: 1494
|
Quote:
C:\EserciziJava>c:\jdk1.3.1_12\bin\javac MakePassword2.java quindi nel prompt dei comandi ero posizionato nella cartella "EserciziJava" e ho richiamato il comando "javac" scrivendone la posizione in cui si trova per poterlo eseguire aggiungendo poi al comando il file "MakePassword2" che risiede nella cartella "EserciziJava" insieme alla classe ConsoleReader. Però il risultato sono i due errori che ho segnalato nel primo post e la compilazione non avviene. Ho provato anche a salvare sia la classe che il sorgente nella cartella BIN del JDK digitando dal prompt dei comandi dalla medesima cartella il comando "javac MakePassword2.java" ma il risultato purtroppo è lo stesso Ultima modifica di lightjay2000 : 30-11-2004 alle 19:46. |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
sembra tutto giusto.
mi sorge un dubbio, prova così: C:\EserciziJava>c:\jdk1.3.1_12\bin\javac -classpath .;%CLASSPATH% MakePassword2.java |
|
|
|
|
|
#11 | |
|
Registered User
Iscritto dal: Nov 2004
Messaggi: 1494
|
Quote:
intanto ti ringrazio moltissimo, poi volevo chiederti una cosa a scopo culturale per imparare: come mai con il comando che mi hai citato ora funziona sia la compilazione che l'esecuzione in modo perfetto e prima no? Da ciò che ho capito io usando la logica CLASSPATH dovrebbe essere un comando che specifica che la classe esterna usata nel file sorgente si trova nella medesima directory del sorgente stesso e che quindi la classe va ricercata in quella stessa cartella. Ho capito bene o c'è qualche altra spiegazione? Un'ultima cosa...........come mai a te la compilazione ha funzionato senza usare quel comando? Ti ringrazio |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
in ordine:
- con l'opzione -classpath puoi specificare il classapth usato dalla jvm (e dal compilatore) senza che venga utilizzata la variabile di ambiente CLASSPATH. Il mio dubbio era che tu l'avessi impostata (dal jdk 1.2 in poi non è necessario farlo, se non hai librerie esterne da caricare) ma ti fossi dimenticato di inserire la directory di lavoro (quella che viene indicata col '.' (punto). il mio consiglio e' quello di rimuovere del tutto il settaggio di CLASSPATH. - hai capito perfettamente - sulla mia macchina quella variabile non e' settata e di default la directory corrente è inclusa in classpath. buona continuazione del corso |
|
|
|
|
|
#13 | |
|
Registered User
Iscritto dal: Nov 2004
Messaggi: 1494
|
Quote:
Ciao e buona permanenza nel forum |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:51.



















