Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51

    Creare librerie personali

    Salve,
    sto cercando di capire qualcosa con la creazione delle librerie. Per fare delle prove semplici ho creato delle directory così:
    codice:
    Prove
        mielib
            cose.class
            manifest.txt
            mate
                Sum.class
                Sot.class
                Mol.class
            persone
                Nome.class
                Misure.class

    Ho iniziato a creare dei file jar separati dal prompt del dos:
    mi sono messo nella directory mielib:

    D:\...\Prove\mielib>jar cf mate.jar mate

    e mi ha creato un file mate.jar
    poi

    D:\...\Prove\mielib>jar cf persone.jar persone

    e mi ha creato un file persone.jar
    Non ho messo il file manifest.txt in quanto nessuna di queste classi hanno in main.

    Le ho testate così:

    import mate.*;
    import persone.*;

    e tutto funziona.

    Ora volendo riunire queste due librerie in un solo file jar del tipo: mielib.jar
    in modo che le possa usare, aggiungendo alle librerie un solo file jar.
    Vado a creare il jar, questa volta includo anche la classe Cose.class ed il manifest.txt.
    Nel file manifest.txt ho scritto: Class-Path: mate persone

    D:\...\Prove>jar cmf manifest.txt mielib.jar mielib Cose.class

    Dopo aver importato tra le librerie esterne mielib.jar
    Le vado a testare così:

    import mielib.*;
    import mielib.mate.*;
    import mielib.persone.*;

    Ma ho il seguente errore:

    ...package mielib does not exist import mielib.*;
    ...error: cannot access Sum
    Sum.su(10,30);
    bad class file: D:\Archivio\Netbeens\Grafica\Package\Prove\mielib. jar(mielib/mate/Sum.class)
    class file contains wrong class: mate.Sum
    Please remove or make sure it appears in the correct subdirectory of the classpath.
    Dove è che sbaglio, perché non me le vede?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da cersil Visualizza il messaggio
    Nel file manifest.txt ho scritto: Class-Path: mate persone
    Non serve.

    Quote Originariamente inviata da cersil Visualizza il messaggio
    D:\...\Prove>jar cmf manifest.txt mielib.jar mielib Cose.class
    Non va bene. Perché così "tiri" dentro il nome mielib come cartella. I package mate e persone sono i package "radice" e quindi nel jar alla radice ci dovranno essere due cartelle "mate" e "persone".

    Quote Originariamente inviata da cersil Visualizza il messaggio
    import mielib.*;
    import mielib.mate.*;
    import mielib.persone.*;
    No, non puoi mettere mielib come package radice. Quando hai compilato la classe Sum, essa ha sicuramente la dichiarazione di package mate;
    E quindi quello è il suo package.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51
    Allora ho ricompilato tutte le classi indicando come package mielib al posto di mate e persone anche la classe Cose.class ha lo steso package mielib. Ho dato un nome al file jar diverso da mielib l'ho chiamato test.jar e ho ricreato il jar:

    D:\...\Prove>jar cf test.jar *

    codice:
    
    
    codice:
    Prove
         mielib
             cose.class
             mate
                  Sum.class
                  Sot.class
                  Mol.class
             persone
                  Nome.class
                  Misure.class
    




    MI da lo stesso errore! Non capisco come devo scrivere!
    Puoi farmi un esempio per avere le due directory mate e persone più la classe Cose tutte nello stesso jar ma che le possa poi importare.
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da cersil Visualizza il messaggio
    Allora ho ricompilato tutte le classi indicando come package mielib al posto di mate e persone anche la classe Cose.class ha lo steso package mielib.

    MI da lo stesso errore! Non capisco come devo scrivere!
    Se mielib ora è il package "radice", allora ad esempio nel sorgente di Sum ci deve essere:

    package mielib.mate;

    I nomi di package si devono sempre "riflettere" nei nomi delle cartelle. Questa è la regola base dei package.

    Se hai fatto così (e simile per le altre classi), allora è corretto:

    D:\...\Prove>jar cf test.jar mielib

    (non usare *, magari tira dentro anche altro)
    Ultima modifica di andbin; 24-02-2018 a 20:15
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    51
    Ricompilato le classi in mate e in persone con package mielib.mate e mielib.persone la classe Cose.class quella con package mielib. Ma non cambia ancora nulla!?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.