Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [java] *. jar ????

  1. #1

    [java] *. jar ????

    Nella stessa directory ho:
    1)Main.java
    2)una cartella chiamata Geometry con dentro due file(primo.java e secondo.java)


    Nel file Main.java inserisco l'istruzione "import Geometry.*"
    e negli altri due dentro la cartella ho messo
    l'istruzione "package Geometry".

    compilo il file Main.java e poi lo eseguo
    e tutto va a buon fine!!!

    Poi creo l'archivio Geometry.jar
    con il comando:
    c:>jar cvf Geometry.jar Geometry\*.class --->enter

    sempre dal prompt e sempre
    con la stessa directory con cui ho
    compilato il Main.java e gli altri.

    A cosa mi serve questo archivio??
    Perche' una volta creato l'archivio.jar
    se elimino la cartella Geometry con dentro
    i sorgenti e il bitecode creato e poi eseguo nuovamente il
    Main.class non mi trova le classi
    che dovrebbero essere dentro l'archivio Geometry.jar? VVoVe:

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    La cosa più immediata per fare un jar è:

    1) Crei il file MANIFEST.MF e lo inserisci in una cartella chiamata META-INF, nel manifest inserisci i parametri come Main-Class: Main
    2) Con winzip fai un archivio e cambi l'estensione da .zip a .jar.

    A questo punto puoi eliminare tutti i class, fare doppio click sul .jar aprendolo con javaw e parte l'applicazione(funzia solo con le grafiche, con quelle a console non ho trovato soluzioni).

    La struttura del jar deve essere:

    Jar.jar
    -META-INF
    ---MANIFEST.MF
    -Main.class

    Se il tuo scopo è solo raccogliere dentro Geometry.jar un insieme di classi compilate e fare una sorta di libreria da distribuire(quindi che non deve essere eseguibile da sola), devi inserire nel classpath le classi. La cosa più diretta e copiare il file jar in JAVA_HOME/jre/lib/ext in questo modo sarà riconosciuta come estensione e a compile-time e a run-time automaticamente trovota, inoltre il policy file atribuirà automaticamente tutti i permessi alle classi ritenendole trusted.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Bhe... allora non la trovero' neanche io
    perche' la prova e' su console.

    Ma dimmi una cosa???
    Ma c'e' qualcosa che non sai in programmazione??
    Rispondi ineccepibilmente a tutti i miei dubbi!!!:-))

    Se ti ricordi avevo intrapreso il visual c++
    ma mi sono buttato all'ippica(java)
    con la speranza di concludere qualcosa!!
    ciao....grazie!!

  4. #4
    Dimenticavo il mio scopo era appunto creare
    una libreria e ho inserito il package Geometry nella cartella ext
    sia come archivio .jar sia come classi
    ma non mi funziona e il programma(con il main)
    non mi trova piu' le classi!!
    Sicuramente devo ripetere la cosa con piu' attenzione...

  5. #5
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Originariamente inviato da maurizio2
    Dimenticavo il mio scopo era appunto creare
    una libreria e ho inserito il package Geometry nella cartella ext
    sia come archivio .jar sia come classi
    ma non mi funziona e il programma(con il main)
    non mi trova piu' le classi!!
    Sicuramente devo ripetere la cosa con piu' attenzione...
    in questo caso funziona anche a console, a console a me non funziona il jar eseguibile, cioè un jar che può partire come un binario qualsiasi con un doppio click, cosa che va solo con le GUI.

    Ora faccio qualche prova e vedo di capire dove sta l'errore


    edit: ah cmq Java non è l'ippica

    ciao
    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  6. #6
    Lo so non volevo affatto sminuire
    ma il senso era che il c\c++
    e' molto bello ma appena intrapreso
    lo studio delle applicazioni
    mi sono messo a piangere
    perche' per due anni di fila
    ho fatto tutto su console
    ho persino realizzato un simulatore
    softwere e un compilatore
    del linguaggio BASIC(se vuoi te lo mando per darci una sbirciata
    l'ho dato anche a anx721)
    e pensavo che con una base cosi'
    le cose sarebbero state meglio(che fiasco)
    cmq il java mi sembra meno ostico anche
    se e' molto piu' vasto e articolato.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da maurizio2
    ho persino realizzato un simulatore
    softwere e un compilatore
    del linguaggio BASIC(se vuoi te lo mando per darci una sbirciata
    l'ho dato anche a anx721)
    Non è che potrei darci una sbirciata pure io? La cosa è piuttosto interessante ed il Basic è stato il mio primo linguaggio di programmazione... (gran bei ricordi ).
    Ti mando l'indirizzo e-mail in un PVT.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Certo!!! Ci mancherebbe!!
    Ciao.

  9. #9
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425

    Soluzione

    Ho fatto una prova e funziona, ora il difficlle sarà spiegare

    Dunque, crei il sorgente della/delle classe/classi della libreria, nel mio esempio ho fatto:

    codice:
    package Test;
    
    public class T
    {
    
        public T()
        {
        }
    
        public void testa()
        {
            System.out.println("Test ok");
        }
    }
    Lo metti dentro la cartella Test e compili con
    javac T.java

    da notare che classi, costruttori e metodi devono essere pubblici.

    Una volta fatto questo clicki col destro sulla cartella Test(che contiene T.class) e fai invia a cartella compressa o generi in qualsiasi modo l'archivio, adesso al zip modifichi l'estensione con .jar.
    Quindi metti il file Test.jar in JAVA_HOME/jre/lib/ext o cmq nel classpath

    Fatto questo crei la classe che userà la libreria, nel mio test:

    codice:
    import Test.*;
    
    public class Tes {
    public static void main(String args[]) {
    T t = new T();
    t.testa();
    }
    }
    Quindi compili

    javac Tes.java
    java Tes

    Ed ecco che funziona, a me viene l'output

    Test ok

    Prova e sappimi dire

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

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.