Scusa ma perché non usi un normale IDE che oltre a farti scrivere il codice ti offre la funzione per includere il jar e di far partire il tuo progetto?
Io per i programmini più "stupidi" da uno o due classi (quelli di prova per intenderci) uso il JCreator che funziona bene e ovvio che per progetti più importanti uso Eclipse che ti offre tanti strumenti in più.
Ciao.
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
L'uso smodato di un IDE porta a situazioni di questo tipo.
Usare un IDE non esclude che tu debba sapere DOVE la jvm cerca le classi che gli interessano (cioè cosa è il classpath).
Usare l'IDE non esclude che tu debba settare il classpath, hai la mascherina grafica e sei contento, ma l'environment lo setti in ogni caso e se non sai specificarlo (correttamente evitando pollution), avere l'interfaccia grafica non cambia le cose
RTFM Read That F*** Manual!!!
Ok allora proprio non capisci: anche se tu sei dentro C:\prova, se il tuo classpath è del tipo "C:\Program Files (x86)\MySQL\Connector.J 5.1; " (basta che lo accordi al tuo classpath insomma), il sistema continua a non funzionare.
Le cose migliorano con le virgolette, non sono sicurissima che la parentesi in un path non crei problemi (non dovrebbe, ma non ci metto la mano sul fuoco).
Ora cancella la variabile d'ambiente CLASSPATH, usa il comando
java -cp elencoClassPath MainClass
migliore sotto tanti punti di vista.
Se questo funziona, fai una cosa
set CLASSPATH elencoClassiPath
ed esegui con
java MainClass
dove MainClass deve indicare il path completo
es. se MainClass è del tipo
org.mypackage.MainClass
tu esegui sempre con
java org.mypackage.MainClass
e stavolta dovrebbe andare
Ultima modifica di valia; 04-11-2014 a 10:30
RTFM Read That F*** Manual!!!
1) avevo già modificato il CLASSPATH con C:\prova a priori
2) il comando che dici tu non funziona, funziona soltanto se lo metto in questa forma: java -cp elencoClassPath; MainClass
ovvero aggiungendo il ; che concatena due comandi prompt
3) facendo set CLASSPATH elencoClassiPath mi dà sempre errore di driver non trovato
4) Alla fine ho risolto installando NETBEANS e creando un progetto importando i .jar che mi servivano ... a quanto pare dovrò abbandonare la programmazione senza IDE
La programmazione senza IDE è molto utile per chi inizia con Java, perché è sicuramente molto "formativa" su tutta una serie di aspetti tra cui appunto il "classpath".
Passare ad un IDE ti risolve le cose solo perché l'IDE semplifica e ti "nasconde" questi aspetti. Quando inizierai a fare applicazioni un po' più complesse, con svariati jar esterni, o a esportare in jar il tuo progetto o ancora a gestire le "risorse" ricercate lungo il classpath .... se già adesso hai problemi/dubbi sul classpath, quando arriverai ai casi citati, di problemi ne avrai almeno il doppio.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
non devi concatenare niente, -cp dai il classpath di riferimento e poi devi indicare la MainClass per l'esecuzione.
se il classpath fosse corretto ti basta
java MainClass
-cp elencoClassPath serve a specificare il path differente e non va terminato con ; (non ricordo documentazione che mi indica una roba del genere. Il ; lo usi come separatore (hai cioè più di una voce), non come terminatore.
un problema di fondo esiste, ma ancora non si è capito dove setti, quanto valgono le robe che setti e perché non va.
Quello che fai con l'IDE lo fai anche senza, risolvere un problema di classpath con l'IDE è come sparare ad una mosca con il napalm.
Adesso fai una cosa, prompt dei comandi e scrivi
echo %CLASSPATH%
e dimmi cosa viene fuori.
Poi
SET CLASSPATH=C:\prova;.;%CLASSPATH%
dove in c:\prova mi aspetto di trovare il jar del driver e il jar con la tua classe
poi fai
echo %CLASSPATH%
e dimmi cosa vedi.
Infine fai
java MainClass
Assicurati anche che chi esegue abbia i permessi di accesso al jar (in lettura).
RTFM Read That F*** Manual!!!
Ragazzi mi sto sentendo seriamente cretino. Vi ho già detto innumerevoli volte che IL CLASSHPATH E' SETTATO CORRETTAMENTE poiché se faccio echo nel prompt mi spunta il percorso correto! Ecco ora vi metto tutte le prove possibili e immaginabili da prompt compreso il discorso del ; così magari mi capite e mi credete:
codice:C:\prova>dir Volume in drive C has no label. Volume Serial Number is 2C78-A9A5 Directory of C:\prova 03/11/2014 17:00 <DIR> . 03/11/2014 17:00 <DIR> .. 04/11/2014 14:55 1.570 DBProva.class 04/11/2014 15:27 1.167 DBProva.java 10/09/2014 11:43 959.987 mysql.jar 3 File(s) 962.724 bytes 2 Dir(s) 73.975.779.328 bytes free C:\prova>java DBProva java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/ amat_records at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at DBProva.main(DBProva.java:12) C:\prova>echo %CLASSPATH% C:\prova;. C:\prova>java DBProva java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/ amat_records at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at DBProva.main(DBProva.java:12) C:\prova>SET CLASSPATH=C:\prova;.;%CLASSPATH% C:\prova>echo %CLASSPATH% C:\prova;.;C:\prova;. C:\prova>java DBProva java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/ amat_records at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at DBProva.main(DBProva.java:12) C:\prova>SET CLASSPATH=C:\prova;. C:\prova>java DBProva java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/ amat_records at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at DBProva.main(DBProva.java:12) C:\prova>java -cp mysql.jar DBProva Error: Could not find or load main class DBProva C:\prova>java -cp mysql.jar; DBProva Connessione riuscita, database: sakila Nomi film: 1 C:\prova>java DBProva java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3306/ amat_records at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at DBProva.main(DBProva.java:12) C:\prova>
No, invece non l'hai settato correttamente! Perché hai solo messo la directory. In classpath il mysql.jar va messo! Sia alla variabile CLASSPATH, sia con il -cp.
Quindi stando in C:\prova i casi sono:
1) Con CLASSPATH:
set CLASSPATH=C:\prova\mysql.jar;.
java DBProva
2) Con -cp
java -cp C:\prova\mysql.jar;. DBProva
Non può non funzionare.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
In tutti questi anni ho solo dovuto dire alla macchina dove si trovava la jvm, ma questo credo debba essere la base.
Ovvio che poi se voglio includere delle librerie devo importarle, ma non credo e non capisco di questo uso smodato di cui parli.
Va bene la possibilità di usare notepad all'inizio (anch'io ho cominciato così), ma bisogna anche cominciare a capire quando si parla di ambiente di sviluppo.
Ciao.
Ultima modifica di schumy2000; 04-11-2014 a 10:50
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein