Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Java RMI] Problema a compilare da Shell

    Buonasera a tutti, è il mio primo post su questo forum!
    mi sto cimentando un pochino con la programmazione ad oggetti remoti con Java, ho creato la mia prima applicazione semplice semplice per prendere un po di confidenza con le RMI di Java, ho implementato il classico programmino Echo tra server e client per intenderci , bene ho sviluppato tutto tramite Eclipse e già testato con successo sia facendo girare in locale sulla stessa JVM server e client, che in "remoto", ovvero eseguendo il server sul pc fisso con windows e il client sul portatile con Ubuntu (entrambi si trovano all'interno della stessa lan wireless) e viceversa, sempre eseguendo il tutto tramite Eclipse.

    Nel dettaglio, questo è il package di tutte le classi che ho usato:
    codice:
    -stub/Echo.class   (interfaccia remota)
    -skeleton/EchoEngine.class   (implementazione dei servizi remoti)
    -server/EchoServerApp.class   (server)
    -client/VocePerEco.class   (client)
    ed ho anche creato il .jar, contenente in questo caso la sola classe Echo.class unica interfaccia, e distribuito nelle librerie di client e server (ovvero in Eclipse l'ho semplicemente messo tra le risorse nella cartella src, non so se sia correttissima gia sta cosa...)

    Bene, veniamo al problema, ovvero l'idea era di provare ora a "distribuire" il client ed il server sulle due macchine e farli girare da terminale, ovvero, l'idea sarebbe di creare due cartelle su Desktop/Scrivania, una sul client, contenente quindi solo la classe VocePerEco.class e lo stub sotto forma di .jar, nel dettaglio la cartella sul client ha questo package:
    codice:
    -client/VocePerEco.java
    -stub/Echo.jar
    mentre sul server avrei una cartella così composta:
    codice:
    -stub/Echo.jar 
    -skeleton/EchoEngine.java
    -server/EchoServerApp.java
    ma il problema è che se vado a compilare i sorgenti, prendiamo per esempio quello del client che è piu semplice, anche se ridefinisco il Classpath, ovvero su shell compilo con il comando:
    codice:
    javac -cp .:/home/giangi/Scrivania/Prova/stub/Echo.jar client/VocePerEco.java
    il risultato è sempre questo:
    error: package stub does not exist
    che viene lanciato non appena va a processare la linea sul sorgente del client dove importo lo stub, ovvero:
    codice:
    import stub.Echo;
    sono abbastanza disperato perchè ho perso perfino il conto delle ore che ci ho passato sbattendoci la testa su da oggi pomeriggio senza trovarne una soluzione, dove e cosa sbaglio?
    Qualsiasi suggerimento è bene accetto , grazie a tutti per l'attenzione!!!

  2. #2
    Allora, ho parzialmente risolto, anzi raggirato il problema, anzichè ricompilare il sorgente del client ho copiato nella cartella del client sulla Scrivania direttamente il .class compilatomi da Eclipse, dopodichè ho esportato la directory dell'applicativo nel CLASSPATH ed ora finalmente funge!
    Continuo però a non capire perchè non riesco a compilare direttamente da terminale...
    Sicuro è una baggianata ma non avendo mai compilato da shell non mi ci raccapezzo!


    Ora mi rimangono piuttosto però un paio di dubbi sul file .JAR, e qui mi servirebbe qualcuno esperto sulla programmazione RMI, quando lavoro su Eclipse, il file .JAR faccio bene a metterlo tra le risorse del progetto, ovvero nella cartella "src", o dovrei metterlo in altra cartella?
    Questo pacchetto .jar con lo stub delle interfaccie remote inoltre andrebbe reso disponibile su indirizzi pubblici (quindi in teoria su cartella in sharing pubblico sul pc), quindi, sempre in teoria, non dovrei copiarlo a mano anche nel progetto del client giusto? Dovrei piuttosto scrivere nel codice del client qualcosa tipo:
    codice:
    import "IndirizzoIPdelServer???".CartellaPubblica.Echo;
    ???
    E' corretto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.