Come condividere file di classe tra 2 progetti

di il
5 risposte

Come condividere file di classe tra 2 progetti

Buon giorno a tutti

ho 2 progetti Java che gestisco con NetBeans

Vorrei fare in modo che 2 progetti (P1 e P2) condividano un gruppo di classi (XL) in modo tale che le modifiche apportate ai file sorgenti in XL siano riportate automaticamente sia su P1 che P2 (ovviamente dopo il relativo Build)   
Ho provato a seguire diverse indicazioni ma ogni volta c'è un problema quindi è evidente che sbaglio in qualcosa.
Qualcuno potrebbe spiegarmi cosa fare? 

Grazie in anticipo

5 Risposte

  • Re: Come condividere file di classe tra 2 progetti

    Non si e' capito un gran che. 

    Che cosa è "un gruppo di classi (XL) "?

    Quali “indicazioni” hai seguito? 

    Sai che cosa e' un file “. jar”?

    Sai che cosa e' una “libreria”? 

  • Re: Come condividere file di classe tra 2 progetti

    Chiedo scusa, la fretta mi ha fatto scrivere in modo molto succinto e quindi cercherò di spiegarmi meglio.

    Premetto che ho sviluppato programmi sin dagli anni 80, prima per divertimento e  poi per lavoro.

    Ho lavorato con diversi linguaggi, assembler RISC compreso, sempre nell'ambito dell'utilizzo di strumenti di misura in ambito industriale.

    Ho sempre avuto il pallino del riutilizzo cioè di sviluppare parti di software facilmente riutilizzabili, quindi anche librerie.

    Quando sono andato in pensione mi ha preso il trip di imparare Java, all'inizio ho imparato con difficoltà, poi sono andato avanti praticamente da solo

    Tornando al mio problema, cercherò di fare un esempio semplice.

    Ho 2 progetti (chiamiamoli P1 e P2), ognuno dei quali contiene diverse file di classi identici, ad esempio una classe che permette di leggere e scrivere un file di testo, un'altra di muovere un immagine (JPanel) sopra un form, ecc…
    Dato che ora programmo per puro divertimento, modifico spesso queste classi aggiungendo o modificando metodi.
    Mi sorge il problema di tenere questi file perennemente allineati.
    So che posso inserire i loro file .jar come libreria ma questo non mi permetterebbe di debuggare eventuali errori o modificare al volo qualche metodo a scopo migliorativo.

    La mia richiesta è: come posso per avere dei file .java posti da qualche parte (una cartella?) che facciano parte sia del progetto P1 che del progetto P2.

    E' chiaro che in caso di modifica di uno di questi file debba sempre ricompilare entrambi i progetti.

    Ho chiesto a ChatGPT come fare e mi ha dato delle indicazioni che però hanno sempre dato errori.
    Se qualcuno pensa che sia ridicolo chiedere info su Java a ChatGPT ha solo da provare ad usarlo e vedrà che il 99% delle volte dà risposte corrette (evidentemente questa volta no).
    Preciso che il mio ambiente di sviluppo è NetBeans.
    Grazie per la pazienza

  • Re: Come condividere file di classe tra 2 progetti

    Ovviamente si puo' fare e c'e' un modo “ufficiale”/"perfetto" per farlo.

    Preambolo:

    ti serve imparare PROPRIO Java? O ti basta un linguaggio per fare esperimenti?

    Questo perche' Java e' un GRAN linguaggio di programmazione, ma per un “neofita” in generale e' SUPER sovvrabbondante.

    L'alternativa moooolto piu' semplice e' Python: ha una sintassi strana MA dalla sua parte ha che tutto il mondo del Machine Learning, Intelligenza Artificiale, ChatGPT e compagnia bella si basano su Python.

    (Attenzione: Python fa SOLO dal “collante” a cose scritte in C/C++/assembler, che fanno le cose “serie”)

    Diventi operativo in un decimo del tempo che hai impiegato con Java.

    A parte questo, SE intendi continuare con Java il trucco (che trucco non e') e' “semplice”: ti servono 3 TRE progetti

    1. Una LIBRERIA Lib contenente le tue classi IN COMUNE
    2. l'APPLICAZIONE A che USA la libreria Lib
    3. l'APPLICAZIONE B che USA la libreria Lib

    .

    Considera che queste “librerie” le usi in continuazione ogni volta che scrivi in un file sorgente Java la stringa “import a.b.Ciccio;”

    In questo caso le librerie le trova in automatico la VM Java perche le ha in pancia, in alternativa bisogna 

    1. crearla, cioe' creare il “.jar” contenente le tue classi COMPILATE
    2. oppure scaricarla dal sito che la mette a disposizione (un classico e' "Maven Central")
    3. indicare alle applicazioni che devono usare OLTRE alle librerie di default, ANCHE la tua libreria

    .

    Considera che in Python hai ESATTEMENTE lo stesso problema: non cambia una virgola. 
    Ed e' la STESSA IDENTICA cosa con OGNI linguaggio di programmazione.

    Ora, come si fa tutto questo?

    Non e' difficile MA ci sono capitoli interi di decine di pagine su qualunque buon libro su Java che lo spiega.

    Inoltre un “buon IDE” ti semplifica molto la vita perche' fa tutto lui:

    1. si occupa di capire QUALI sorgenti sono cambiati E RICOMPILARLI
    2. si occupa di CAPIRE l'ordine di compilazione (PRIMA la libreria POI il progetto)
    3. si occupa di AGGIORNARE le librerie usate nei progetti (la libreria del progetto e' vecchia? Ricupera la version piu' aggiornata!)

    .

    Insomma, fa tutto il lavoro “stupidino” (che stupidino non e') automaticamente.

    Dove sta' l'inghippo? Che devi “configurare” i vari progetti nel modo giusto, altrimenti non funziona ‘na cippa’. 

    Spiegarlo a son di post, sarebbe un “incubo” ;-)
    Il motivo e' banale: NON C'E' solo da capire come creare la libreria, MA ANCHE come  configurare il “classpath”, ed n-mila altre cose …

    Insomma: i concetti sono diversi e vanno capiti TUTTI. 

  • Re: Come condividere file di classe tra 2 progetti

    07/03/2024 - Robroy ha scritto:


    Chiedo scusa, la fretta mi ha fatto scrivere in modo molto succinto e quindi cercherò di spiegarmi meglio.

    Premetto che ho sviluppato programmi sin dagli anni 80, prima per divertimento e  poi per lavoro.

    Ho lavorato con diversi linguaggi, assembler RISC compreso, sempre nell'ambito dell'utilizzo di strumenti di misura in ambito industriale.

    Eh eh, mi sembra di essere la tua fotocopia! Abbiamo molto in comune, tranne il fatto che io non sono ancora in pensione, ma mi manca poco.

    Io ho semplicemente realizzato le classi da condividere in un progetto a parte, suddividendolo in vari package, ovvero raccolte di .java omogenei.
    Poi compilato in .jar 

    Nelle applicazioni che li devono usare aggiungo la libreria del progetto da condividere, ovvero puntando al .jar, e poi nella parte iniziale inserisco le istruzioni import NomePackage.NomeClasse
    e funziona tutto perfettamente. ;-)

  • Re: Come condividere file di classe tra 2 progetti

    16/03/2024 - ZioCrick ha scritto:


    07/03/2024 - Robroy ha scritto:


    Chiedo scusa, la fretta mi ha fatto scrivere in modo molto succinto e quindi cercherò di spiegarmi meglio.

    Premetto che ho sviluppato programmi sin dagli anni 80, prima per divertimento e  poi per lavoro.

    Ho lavorato con diversi linguaggi, assembler RISC compreso, sempre nell'ambito dell'utilizzo di strumenti di misura in ambito industriale.

    Eh eh, mi sembra di essere la tua fotocopia! Abbiamo molto in comune, tranne il fatto che io non sono ancora in pensione, ma mi manca poco.

    Io ho semplicemente realizzato le classi da condividere in un progetto a parte, suddividendolo in vari package, ovvero raccolte di .java omogenei.
    Poi compilato in .jar 

    Nelle applicazioni che li devono usare aggiungo la libreria del progetto da condividere, ovvero puntando al .jar, e poi nella parte iniziale inserisco le istruzioni import NomePackage.NomeClasse
    e funziona tutto perfettamente. ;-)

    ciao ZioCrick

    la soluzione del file Jar la conoscevo ma dato che traffico continuamente sui sorgenti della “libreria” mi interessava condividere proprio quelli.

    Ad ogni modo ci sono riuscito, 

    Proprieties / Libray / Classpath / add Project

    e aggiungo il progetto che contiene i file di libreria

    08/03/2024 - migliorabile ha scritto:


    Ovviamente si puo' fare e c'e' un modo “ufficiale”/"perfetto" per farlo.

    Preambolo:

    ti serve imparare PROPRIO Java? O ti basta un linguaggio per fare esperimenti?

    Questo perche' Java e' un GRAN linguaggio di programmazione, ma per un “neofita” in generale e' SUPER sovvrabbondante.

    L'alternativa moooolto piu' semplice e' Python: ha una sintassi strana MA dalla sua parte ha che tutto il mondo del Machine Learning, Intelligenza Artificiale, ChatGPT e compagnia bella si basano su Python.

    (Attenzione: Python fa SOLO dal “collante” a cose scritte in C/C++/assembler, che fanno le cose “serie”)

    Diventi operativo in un decimo del tempo che hai impiegato con Java.

    A parte questo, SE intendi continuare con Java il trucco (che trucco non e') e' “semplice”: ti servono 3 TRE progetti

    1. Una LIBRERIA Lib contenente le tue classi IN COMUNE
    2. l'APPLICAZIONE A che USA la libreria Lib
    3. l'APPLICAZIONE B che USA la libreria Lib

    .

    Considera che queste “librerie” le usi in continuazione ogni volta che scrivi in un file sorgente Java la stringa “import a.b.Ciccio;”

    In questo caso le librerie le trova in automatico la VM Java perche le ha in pancia, in alternativa bisogna 

    1. crearla, cioe' creare il “.jar” contenente le tue classi COMPILATE
    2. oppure scaricarla dal sito che la mette a disposizione (un classico e' "Maven Central")
    3. indicare alle applicazioni che devono usare OLTRE alle librerie di default, ANCHE la tua libreria

    .

    Considera che in Python hai ESATTEMENTE lo stesso problema: non cambia una virgola. 
    Ed e' la STESSA IDENTICA cosa con OGNI linguaggio di programmazione.

    Ora, come si fa tutto questo?

    Non e' difficile MA ci sono capitoli interi di decine di pagine su qualunque buon libro su Java che lo spiega.

    Inoltre un “buon IDE” ti semplifica molto la vita perche' fa tutto lui:

    1. si occupa di capire QUALI sorgenti sono cambiati E RICOMPILARLI
    2. si occupa di CAPIRE l'ordine di compilazione (PRIMA la libreria POI il progetto)
    3. si occupa di AGGIORNARE le librerie usate nei progetti (la libreria del progetto e' vecchia? Ricupera la version piu' aggiornata!)

    .

    Insomma, fa tutto il lavoro “stupidino” (che stupidino non e') automaticamente.

    Dove sta' l'inghippo? Che devi “configurare” i vari progetti nel modo giusto, altrimenti non funziona ‘na cippa’. 

    Spiegarlo a son di post, sarebbe un “incubo” ;-)
    Il motivo e' banale: NON C'E' solo da capire come creare la libreria, MA ANCHE come  configurare il “classpath”, ed n-mila altre cose …

    Insomma: i concetti sono diversi e vanno capiti TUTTI. 

    Grazie, ma non sono interessato a Pyton, almeno per ora.

    Nonostante sia in pensione ho parecchie cose da fare e quindi mi diverte imparare Java.

    Effettivamente all'inizio è stato un po' ostico, soprattutto non avendo aiuti esterni, ma in seguito le cose sono migliorate anche se non conosco tutte le potenzialità.

    Cordiali saluti a tutti

    Robroy

Devi accedere o registrarti per scrivere nel forum
5 risposte