|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Apr 2003
Messaggi: 22
|
[java]Problemi nel settare il classpath
Io, ed altri colleghi stiamo realizzando un piccolo progetto che consiste in un'applicazione javarmi che simula il gioco della roulette.
Il progetto e' stato sviluppato ed era funzionante sotto MACOSX, ma ora dobbiamo fare andare il server sotto linux ed e' qui che ci sorge il problema. Dobbiamo collegarci ad un database postgres ma non riusciamo a caricare i jar del driver. La stessa cosa ci capita per un .jar di libreria grafica. Siamo convinti, dopo varie prove (vedi tentativi) che il problema sia legato al settaggio del CLASSPATH. Nel primo caso l'errore e': "java.sql.SQLException: No suitable driver" nel secondo "java.lang.NoClassDefFoundError: org/jdesktop/layout/GroupLayout$Group" . tentativi gia' fatti: - Settaggio della variabile di sistema tramite EXPORT - Settaggio della variabile tramile .bashrc - Settaggio della variabile tramite parametro -classpath da riga di lancio - Scompattamento dei jar e posizionamento della directory con i file scompattati - Concessione di tutti i permessi alle cartelle e file dei classpath - Controllato e concesso tutti i permessi necessari da policy Ci sorge il dubbio che forse non lo settiamo nella maniera corretta... ma non riusciamo a capire come sia possibile settarlo, dato che abbiamo provato svariate maniere, seguendo anche guide del sito della sun. Se avete qualche idea su come risolverlo, fateci sapere perche' siamo disperati!! grazie e ciao ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Nella directory di installazione del JRE c'è una cartella "ext" sotto "lib". Copia lì dentro i jar che servono al tuo programma.
Controlla per sicurezza quanti e quali JRE hai installato sul sistema. Se ce n'è più d'uno dovrai mettere le librerie nel JRE in uso.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Occorrerebbero piu' informazioni, esempio:
dove si trova il jar postgres (relativamente al resto)? Come lanciate l'applicazione?
__________________
|Java Base| |
![]() |
![]() |
![]() |
#4 | ||
Junior Member
Iscritto dal: Apr 2003
Messaggi: 22
|
Quote:
![]() Quote:
L'applicazione la lanciamo dalla radice del progetto (PARprogetto) con: "java -DJava.security.policy={**path assoluto del file di policy**} -Djava.rmi.server.codebase={url del codebase} giocoroulette.TavoloGioco" dove TavoloGioco e' il file main del server (dentro il package giocoroulette), il file di policy ed il codebase funzionano e sono visti correttamente (anche perche' su MACOSX funzionava tutto). Oltre a questo comando "base" abbiamo provato (come ho scritto sopra) a settiare il classpath dalla riga di comando con: "-classpath :/home/accounts/studenti/{**home-mia**}/javarmi/lib/postgresql.jar" .. oppure senza .jar .. oppure scomppattando i .class e mettendo il path della cartella ******UPDATE****** adesso tramite il comando: "export CLASSPATH=/home/accounts/studenti/{**home-mia**}/javarmi/: /home/accounts/studenti/{**home-mia**}/javarmi/swings.jar: /home/accounts/studenti/{**home-mia**}/javarmi/postgresql.jar: ./" siamo riusciti a caricare le classi swing per l'interfaccia grafica del client, ma il problema dei driver postgre persiste Ultima modifica di Rulez : 19-07-2007 alle 11:34. |
||
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se usi Java 6 (forse anche 5, non ricordo esattamente) crea una cartella "libraries" nella radice del progetto, buttaci dentro tutti i jar che ti servono e lancia il programma con:
java -cp .:libraries/* eccetera Comunque l'impostazione del CLASSPATH, sebbene desueta, è giusta. Per scaramanzia, le capitalizzazioni sono ok? Magari è postgresql.JAR o Postgresql.jar.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
O e' un problema di connessione al database.
Su che metodo vi da' l'eccezione? Poi, che url usate? In pratica, incollate qui un po' di codice ![]() So che non e' bello rispondere con delle domande, ma servono decisamente piu' info ![]()
__________________
|Java Base| |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La versione di Postgre che usate su Linux è la stessa che usavate su Mac OsX? Detto altrimenti, la versione del driver jdbc contenuta in postgrsql.jar è quella giusta?
Lo dico perchè se fosse un problema di Classpath allora dovreste vedere un'eccezione ClassNotFoundException nel momento in cui caricate il driver o creare il DataSource. Voi avete invece una SQLException. Cioè la classe c'è ma il Driver non sembra in grado di interpretare correttamente la stringa di connessione rispetto alla base dati a cui cerca di connettersi.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#8 | ||
Junior Member
Iscritto dal: Apr 2003
Messaggi: 22
|
Quote:
il file si chiama proprio postgresql.jar tutto minuscolo.. Quote:
Codice:
package giocoroulette; import java.io.Serializable; import java.rmi.*; import java.sql.*; public class ListaUtenti implements Serializable { public String username; public InterfacciaCroupier croupier; private static int generatorePingID = 1; public int pingID; private static String DB_HOST = "jdbc:postgresql://arena.sci.univr.it/didattica"; // percorso di rete per accedere al dbms private static String DB_NAME = "dblab133"; // nome del database a cui accedere private static String DB_USER = "userlab133"; // nome utente per accedere al dbms private static String DB_PWD = "*********"; // password dell'utente per accedere al dbms protected static String JDBC_DRIVER = "org.postgresql.Driver"; // nome del driver JDBC public static final ListaUtenti LISTA_VUOTA = new ListaUtenti(); private ListaUtenti coda; private static ListaUtenti testaLista = LISTA_VUOTA; // -- costruttore vuoto private ListaUtenti() { this.username = ""; this.croupier = null; this.coda = null; try { Class.forName(JDBC_DRIVER); String dbmsURL = "jdbc:"+DB_HOST+"/"+DB_NAME+"?user="+DB_USER+"&password="+DB_PWD; Connection dbmsConn = DriverManager.getConnection(dbmsURL); Statement state = dbmsConn.createStatement(); String updateQuery = "UPDATE User SET isOnline = '0' WHERE 1;"; state.executeUpdate(updateQuery); } catch (Exception ex) { ex.printStackTrace(); } } "Connection dbmsConn = DriverManager.getConnection(dbmsURL);" abbiamo gia' controllato sul sito della postgre la sintassi dell'url ed e' corretta .. ci era venuto in mente il che "forse" non e' possibile fare l'accesso al database da un programma .. boh ma dato che da terminale possiamo accederci, scriverci ecc.. e poi "Class.forName(JDBC_DRIVER);" non da errori .. boh |
||
![]() |
![]() |
![]() |
#9 | |||
Junior Member
Iscritto dal: Apr 2003
Messaggi: 22
|
Quote:
Quote:
Quote:
|
|||
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Dal codice sembra che mettiate due volte "jdbc:"
provate a stampare dbmsURL
__________________
|Java Base| |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
Dev'essere la forma della stringa di connessione.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
![]() |
![]() |
![]() |
#13 | |
Junior Member
Iscritto dal: Apr 2003
Messaggi: 22
|
Quote:
![]() ![]() Ultima modifica di Rulez : 19-07-2007 alle 13:31. |
|
![]() |
![]() |
![]() |
#14 |
Junior Member
Iscritto dal: Apr 2003
Messaggi: 22
|
OLEEEEEEEEEEEEEEEE RISOLTOOOO! ERA url sbagliatoooo!!
certo che hanno cambiato tutto senza comunicare un cazzo -.- grazie a tutti comunque e scusate lo sbattimento ![]() ora ci sono da mettere aposto un po' di cose ma dovrebbe funzionare Ultima modifica di Rulez : 19-07-2007 alle 13:28. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:50.