Deploy Programma java con Properties

di il
7 risposte

Deploy Programma java con Properties

Ciao a tutti, mi sono appena iscritto al forum e ho una domanda:
ho un programma java che usa un file di properties, in Eclipse tutto funziona a meraviglia, quando invece faccio l'export-> runnabel jar file, e poi l'eseguo da riga di comando con Java -jar nomeprogramma.jar non trova il file di properties... Qualcuno può aiutarmi?
Ps. il file di properties è nel main folder del progetto
Grazie in anticipo

7 Risposte

  • Re: Deploy Programma java con Properties

    Fresco ha scritto:


    quando invece faccio l'export-> runnabel jar file, e poi l'eseguo da riga di comando con Java -jar nomeprogramma.jar non trova il file di properties... Ps. il file di properties è nel main folder del progetto
    "main folder" del progetto vuol dire poco/nulla. Allora: innanzitutto bisogna distinguere tra due usi di un file di un properties:

    a) quando il file di properties contiene configurazioni "tecniche" per il funzionamento della applicazione, da inserire DENTRO il jar. In tal caso va trattato come "risorsa" a sola lettura secondo lo stesso meccanismo del class loader usato dalle classi, tipicamente tramite i metodi getResource() o getResourceAsStream() di Class.

    b) quando il file di properties deve stare FUORI dal jar perché deve essere aggiornabile dalla applicazione e/o modificabile "a mano" da un utente.

    Se è b) la questione è poi solo quella di stabilire DOVE deve essere posizionato il file di properties, o per meglio dire: in quale relazione deve stare rispetto al jar. Ci sono diverse possibilità, il file di properties potrebbe essere rintracciabile:

    1) nella directory "corrente" o relativa, sotto o sopra, ad essa
    2) nella stessa directory del jar o relativa, sotto o sopra, ad essa (è un concetto più fine rispetto a 1), le due cose possono coincidere ma non è detto)
    3) in una directory "notevole", es. la "home" directory dell'utente o più sotto
    4) in una directory configurabile dall'utente

    Aggiungo 5) (brutto ma possibile) in una directory assoluta fissa "schiantata" nel codice.
  • Re: Deploy Programma java con Properties

    Grazie Andrea per la risposta, la soluzione che vorrei adottare è la A, allego il metodo usato per leggere le properties:

    public GetParameters() {

    try (InputStream Fprofile = getClass().getClassLoader().getResourceAsStream("./IoFile/file.properties");)
    {
    fProperties = new Properties();
    if (Fprofile != null) {
    fProperties.load(Fprofile);
    fPathI = fProperties.getProperty("PathInput");
    fPathO = fProperties.getProperty("PathOutput");
    cvsSplitBy = fProperties.getProperty("SplitBy");
    } else {
    System.out.println("File Properties non trovato");
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
  • Re: Deploy Programma java con Properties

    Fresco ha scritto:


    try (InputStream Fprofile = getClass().getClassLoader().getResourceAsStream("./IoFile/file.properties");)
    Beh, dipende: "IoFile" si trova "alla radice" o deve essere relativo al package della classe (quella descritta dal getClass() ) ??

    (EDIT: "alla radice" si intende riferito a ciò che si trova in classpath)
  • Re: Deploy Programma java con Properties

    Ecco il progetto
    progr.png
    progr.png

  • Re: Deploy Programma java con Properties

    Forse devi specificare src nel patch: ./src/IoFile/file.properties"
  • Re: Deploy Programma java con Properties

    TheRT0C ha scritto:


    Forse devi specificare src nel patch: ./src/IoFile/file.properties"
    No, una "src" non c'entra più niente quando l'applicazione è in esecuzione e specialmente quando dovrà girare per conto suo (senza avere più nulla a che fare con i sorgenti e il progetto originale).
  • Re: Deploy Programma java con Properties

    Grazie a tutti, ho risolto mettendo le properties fuori da tutti i package, quindi a livello di src folder...
Devi accedere o registrarti per scrivere nel forum
7 risposte