Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126

    [JAVA] Creare file JAR eseguibile

    Salve a tutti,
    devo creare un file JAR eseguibile di una directory, che contiene varie sottodirectory con le classi del programma.
    In una di queste "applicazionegrafica" vi è la classe che voglio far partire come main.
    Non capisco:
    - come creare il file manifest.C'è una struttura standard del documento?
    - come fare il jar di tutte le classi e anche delle immagini persenti nelle directory.

    -Qualcuno che usa netbeans 5 sa come fare il manifest direttamente da la perchè quando gli faccio creare il jar me lo crea con tutte le classi dell'applicazione,mi crea un META-INF con dentro il seguente codice manifest:

    codice:
    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.6.5
    Created-By: 1.5.0_04-b05 (Sun Microsystems Inc.)
    Ciao e grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    La cosa è abbastanza semplice (NetBeans non c'entra nulla).
    Apri il blocco note (o un editor a caso).
    Scrivici dentro queste pochissime righe:
    codice:
    Manifest-Version: 1.0
    Created-By: 1.4.2_08 (Sun Microsystems Inc.)
    Main-Class: percorso\alla\classe\da\avviare\NomeClasse
    (ps: il percorso alla classe è relativo alla directory radice della tua applicazione)

    Salva il file dove vuoi (non nella directory della tua applicazione o una sua sottodirectory) con nome MANIFEST.MF. Ad esempio: C:\MANIFEST.MF

    Vai al prompt.
    Ti posizioni all'interno della directory radice della tua applicazione. Esempio:
    codice:
    C:\
    |
    +--- Radice
    |    |
    |    +--- Prima Sottodirectory
    |    +--- Seconda Sottodirectory
    |    +--- ...
    |    +--- PrimoFile (se esiste)
    |    +--- ...
    
    > CD \Radice
    Ora esegui il comando JAR in questo modo:
    codice:
    > jar cvfm NomeDaAssegnareAlJar.jar C:\MANIFEST.MF .
    Attenzione: il punto messo alla fine del comando è necessario per dire al comando JAR che si tratta di una directory e quindi va elaborata ricorsivamente.

    A questo punto, nella directory dove ti trovi (C:\Radice) avrai il tuo bel file JAR.


    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Ciao e grazie,
    ho seguito dettagliatamente le istruzioni ma quando scrivo (sotto linux) la
    codice:
    java -jar contact.jar
    mi da il seguente errore:
    codice:
    Exception in thread "main" java.lang.NoClassDefFoundError:  icontact/applicazionegrafica/main_56
    Ti posto il manifest:
    codice:
    Manifest-Version: 1.0
    Created-By: 1.4.2_08 (Sun Microsystems Inc.)
    Main-Class:  icontact/applicazionegrafica/main_56
    Per prova ho provato anche cosi:
    codice:
    Manifest-Version: 1.0
    Created-By: 1.4.2_08 (Sun Microsystems Inc.)
    Main-Class:  icontact.applicazionegrafica.main_56
    ...stesso errore.

    Per vedere se tutto funziona ho creato main_56 che fa solo questo:
    codice:
    import javax.swing.*;
    
    public class main_56 {    
        /** Creates a new instance of main */
        public main_56() {
        }
        
        public void prova(){
     
        }
        public static void main(String[] args) {
            // TODO code application logic here
        JOptionPane.showMessageDialog(new JFrame(), "BENVENUTTOOOOOO!!!!!!!!!!!");
        }
    }
    visto che la classe GUI nn me la chiama...
    Puoi aiutarmi per favore?
    Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Credo che sia perchè manca la definizione per package:
    codice:
    import javax.swing.*;
    
    package icontact.applicazionegrafica;
    
    public class main_56 {    
        /** Creates a new instance of main */
        public main_56() {
        }
        
        public void prova(){
     
        }
        public static void main(String[] args) {
            // TODO code application logic here
        JOptionPane.showMessageDialog(new JFrame(), "BENVENUTTOOOOOO!!!!!!!!!!!");
        }
    }
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Scusa, mi son dimenticato di copiarla cmq c'è.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Se nel manifest tolgo
    lo spazio corrispondente ad un invio sotto dopo la classe main_56 mi da il seguente errore:
    codice:
    Failed to load Main-Class manifest attribute from
    contact.jar

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    L'invio serve.
    Fai vedere com'è la struttura della directory della tua applicazione e dove ti posizioni per la creazione del JAR.


    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
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    codice:
    home/
    |
    +--emmanuelec
       |
       +--prove
    	|
            |+Contact
    	| +--icontact
    	| | |
    	| | +--applicazionegrafica
    	| | +--..
    	| | +--..
    	| +--images
    	| +--lib
            | +--..
            | +--..
            *--manifest.mf
    nella shell:
    codice:
    :/home/emmanuelec/prove/Contact# jar cvfm Contact.jar /home/emmanuelec/prove/manifest.mf .
    però mi crea il file correttamente da:
    icontact

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Non chiedermi il perchè ma il main_56 ora funziona.
    Ho provato ora la vera classe di main che voglio far partire...e indovina non funziona.
    Ora mi da il seguente errore:
    codice:
    Exception in thread "main" java.lang.NoClassDefFoundError: org/jdesktop/layout/GroupLayout$Group
    penso (e ditemi se sbaglio) che cerchi dei file jar del mio programma che sono sotto lib.
    Domanda: è possibile includere altri jar nel jar creato visto che ho delle classi che ne fanno uso e farli eseguire automaticamente o devo prima di creare il mio jar scompattarli e poi creare il mio file jar?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    La risposta corretta è la seconda.
    Devi tenere presente che se tu indichi import org.qualcosa.altro la JVM cercherà una directory org a partire dalla root del tuo package. Se nella root del tuo package non esiste una directory org, la JVM fallirà.


    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

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.