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

    creare una libreria .jar con struttura senza la presenza di Main.class

    Salve a tutti,
    devo creare una libreria di classi in formato .jar .
    Nessuna delle classi è di tipo main class .
    Nel seguito mostro l'organizzazione delle directory che deve possedere la libreria :

    agtk.jar -->agtk -->ag (contiene AG.class)--> parser (contiene AgP.class)
    ......... |.........|....................................... ......................................
    ......... |......... --> agf (contiene AgfError.class).................................
    ......... |................................................. ......................................
    ......... |................................................. ......................................
    ......... --> util (contiene FileUtil.class)................................... ..........

    Sottolineo che in tale struttura ho inserito, in parentesi tonde, anche la posizione di alcuni file class che devono appartenere alla libreria. Quindi come posso creare una libreria con tale struttura ? Ricordo che non vi è nessuna delle classi di tipo Main.
    Ciao a tutti swan

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: creare una libreria .jar con struttura senza la presenza di Main.class

    Originariamente inviato da swanelvis
    Salve a tutti,
    devo creare una libreria di classi in formato .jar .
    Nessuna delle classi è di tipo main class .
    Nel seguito mostro l'organizzazione delle directory che deve possedere la libreria :

    agtk.jar -->agtk -->ag (contiene AG.class)--> parser (contiene AgP.class)
    ......... |.........|....................................... ......................................
    ......... |......... --> agf (contiene AgfError.class).................................
    ......... |................................................. ......................................
    ......... |................................................. ......................................
    ......... --> util (contiene FileUtil.class)................................... ..........

    Sottolineo che in tale struttura ho inserito, in parentesi tonde, anche la posizione di alcuni file class che devono appartenere alla libreria. Quindi come posso creare una libreria con tale struttura ? Ricordo che non vi è nessuna delle classi di tipo Main.
    Innanzitutto si suppone (e spero che tu l'abbia pensato proprio così) che quelle cartelle che devono essere presenti nel jar "riflettano" i package delle classi.

    Ossia, hai le classi:

    util.FileUtil
    agtk.agf.AgfError
    agtk.ag.AG
    agtk.ag.parser.AgP

    In tal caso crei su disco una struttura esattamente come l'hai pensata, compili (i file .class devono essere con la stessa identica struttura) e poi crei il jar tirando dentro le directory.

    Non so come compili ... da un IDE? A mano con i tools del JDK??
    Creare un tale jar con il comando 'jar' del JDK è davvero molto semplice: ti posizioni sulla directory "base" (quella che contiene util e agtk) e dai:

    jar cf tuofile.jar *.class
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: creare una libreria .jar con struttura senza la presenza di Main.class

    Originariamente inviato da andbin
    Innanzitutto si suppone (e spero che tu l'abbia pensato proprio così) che quelle cartelle che devono essere presenti nel jar "riflettano" i package delle classi.
    Infatti, tali cartelle rifllettono i package delle classi

    Ossia, hai le classi:

    util.FileUtil
    agtk.agf.AgfError
    agtk.ag.AG
    agtk.ag.parser.AgP

    In tal caso crei su disco una struttura esattamente come l'hai pensata, compili (i file .class devono essere con la stessa identica struttura) e poi crei il jar tirando dentro le directory.

    Non so come compili ... da un IDE? A mano con i tools del JDK??
    Creare un tale jar con il comando 'jar' del JDK è davvero molto semplice: ti posizioni sulla directory "base" (quella che contiene util e agtk) e dai:

    jar cf tuofile.jar *.class
    Ho seguito il tuo consiglio facendo in questo modo:

    1)Ho compilato i file sorgenti ottenendo i file
    FileUtil.class
    Agferror.class
    AG.class
    AgP.class

    2) Ho creato su disco la struttura delle directory che dovrà avere la libreria
    3) Ho inserito i file . class in tale struttura
    4) Da riga di comando mi sono posizionato nella directory "base" contenente le cartelle agtk e util ed ho digitato il comando ----> jar cf tuofile.jar *.class
    ma restituisc e il messaggio di errore "*.class: impossibile trovare il file o la directory

    Come risolvere?

  4. #4
    Lapsus....ci sono riuscito a creare l'archivio, come hai detto mi sono importato nell'archivio man mano tutti i package digitando:

    jar cf agtk.jar agtk\ag\*.class agtk\agf\*.class ...etc etc


    Grazie mille per l'aiuto

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: creare una libreria .jar con struttura senza la presenza di Main.class

    Originariamente inviato da swanelvis
    ma restituisc e il messaggio di errore "*.class: impossibile trovare il file o la directory
    Sì vero ... lì in quella directory non hai dei .class.

    Se sotto quella base hai solamente le sottodirectory e i file .class, allora fai:

    jar cf tuofile.jar .

    Tira dentro tutto ciò che trova da lì in giù.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Ho un problema !
    La creazione dell'archivio è riuscita alla perfezione mediante il comando:

    jar cf agtk.jar agtk\ag\*.class agtk\ag\parser\*.class agtk\agf\*.class util\*.class

    Successivamente ho aggiunto l'archivio come libreria al progetto che stò sviluppando in NetBeans, ma quando provo ad importare le classi contenute nel package agtk.ag ho dei problemi. Nel senso che riesco a fare l'import di :

    import agtk.agf

    ma non compare il package

    import agtk.ag (non compare ag)


    Da cosa dipende?

  7. #7
    Problema risolto, tramite la direttiva package inserita in ogni classe.

    per AG.Parser
    package agtk.ag.parser;

    per AG:
    package agtk.ag;

    per AgfError:
    package agtk.agf;

    per FileUtil:
    package util;

    La libreria creata funziona alla perfezione.
    Grazie Mille

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da swanelvis
    Problema risolto, tramite la direttiva package inserita in ogni classe.
    Quindi prima non avevi le dichiarazioni di package nelle classi??

    Ma l'avevo anche detto all'inizio: "che quelle cartelle che devono essere presenti nel jar "riflettano" i package delle classi". E tu: "Infatti, tali cartelle rifllettono i package delle classi"

    Mah .. non lo so .... :rollo:
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.