Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 45 di 45

Discussione: [Java] creazione file jar

  1. #31
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Ho provato modificando il manifest in questo modo:
    Codice:
    Manifest-Version: 1.0
    Created-By: 1.6.0_18 (Sun Microsystems Inc.)
    Main-Class: class_main
    Ho ricreato il file jar, ed eseguendo il comando java -jar app.jar mi ritorna sempre lo stesso errore

    Sevenjeak
    Software developer and much more

  2. #32
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    class-main.java definisce una classe che sta in un package? posta il codice di quella classe

  3. #33
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    class_main non e il file java, ma il file class, cmq non definisce nessuna classe che sta in un pacchetto

    Sevenjeak
    Software developer and much more

  4. #34
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    In java le classi pubbliche risiedono in un file con lo stesso nome della classe, quindi ne deduco che class_main non sia stata dichiarata public, questo non la rende accessibile all'esterno ma visibile solo all'interno dello stesso package (anche se non è dichiarato c'è sempre un package)

  5. #35
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Veramente io la classe lo dichiarata in questo modo:
    Codice:
    class class_main()
    {
        public static void main(String[] args)
        {
           ......
        }
    }
    Io sapevo che: se davanti al prefisso class non era definito nulla, di default, quella classe veniva definita come public, non e cosi? o non era quello che tu intendevi?
    Ultima modifica di sevenjeak : 01-02-2010 alle ore 15.30.52

    Sevenjeak
    Software developer and much more

  6. #36
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    se non la dichiari public non è pubblica, è solamente accessibile all'interno dello stesso package (e ovviamente il runtime di java sta all'esterno)
    Ultima modifica di AlexKidd : 01-02-2010 alle ore 19.49.25

  7. #37
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Scusa, ma non riesco, mi da lo stesso errore scrivendo il comando: java -jar app.jar
    Sto creando il file jar utilizzando un programma in java contenente una semplice interfaccia grafica ( creata solamente per provare se funziona il file jar ) il file si chiama Pilota.java e contiene solamente questo codice scritto per provare la procedura:
    Codice:
    import java.io.*;
    import javax.swing.*;
    
    public class Pilota extends JFrame
    {
       public static void main (String[] args) 
       {
          JFrame finestra = new JFrame();
          finestra.setVisible(true);
       }
    }
    No so, sbaglio io qualcosa? dovrei anche indicare all'interno del manifest che la classe estende la classe JFrame?
    Ultima modifica di sevenjeak : 01-02-2010 alle ore 21.24.57

    Sevenjeak
    Software developer and much more

  8. #38
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    La classe Pilota la devi dichiarare public, così:
    Codice:
    import java.io.*;
    import javax.swing.*;
    
    public class Pilota extends JFrame
    {
       public static void main (String[] args) 
       {
          JFrame finestra = new JFrame();
          finestra.setVisible(true);
       }
    }

  9. #39
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Già fatto, come vedi sopra il messaggio, lo editato perché per sbaglio ho preso un'altro codice, ma mi da lo stesso errore
    Ultima modifica di sevenjeak : 01-02-2010 alle ore 21.27.32

    Sevenjeak
    Software developer and much more

  10. #40
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    adesso ci dici per bene due cose:

    cosa contiene questa volta il manifest?
    qual'è l'errore riscontrato? ne abbiam visti cosi tanti che ho perso il filo

  11. #41
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Allora, ho creato in java un file Pilota.java, contenente questo codice
    Codice:
    import java.io.*;
    import javax.swing.*;
    
    public class Pilota extends JFrame
    {
    	public static void main (String[] args) 
    	{
    		JFrame finestra = new JFrame();
    		finestra.setVisible(true);
        }
    }
    nel momento della sua esecuzione l'interprete java mi ha creato il suo file Pilota.class, Dopo aver fatto il file MANIFEST.mf, contenente queste righe:

    Codice:
    Manifest-Version: 1.0
    Created-By: 1.6.0_18 (Sun Microsystems Inc.)
    Main-Class: Pilota
    Modificato rispetto al precedente ( visto che nella Main-Class avevo mezzo il percorso completo )

    Apro la console e setto la variabile path scrivendo questa riga di comando: set path=C:\Programmi\Java\jdk1.6.0_13\bin, Dopo di che eseguo questo comando per creare il file jar: jar cfm app.jar MANIFEST.mf Pilota.class.

    Il file jar me lo crea, il problema e che: sia se faccio doppio click sul file e sia se lo eseguo da terminare non me lo esegue, per eseguirlo da terminare utilizzo questo comando: java -jar app.jar e mi ristetuisce questo messaggio:
    Codice:
    Failed to load Main-Class manifest attribute from app.jar

    Sevenjeak
    Software developer and much more

  12. #42
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    a me funziona, potresti avere dei problemi di classpath

    prova ad eseguire l'applicazione cosi

    java -cp . -jar app.jar

    imposta il classpath sulla directory corrente e lo obbliga a cercarsi le classi in quel punto

  13. #43
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Il comando mi restituisce questo errore:
    Codice:
    Unrecognized option: -cp.
    Could not create the Java virtual machine.
    Rimane il fatto che: aggiungendo manualmente il Main-Class, nel manifest, all'interno del file jar, il file mi si esegue correttamente, quindi avrò sbagliato proprio nella creazione del file jar?

    Sevenjeak
    Software developer and much more

  14. #44
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    Io eseguito gli stessi comandi da te indicati nel post precedente e sono riuscito ad eseguire il programma correttamente.

    Comunque tra -cp e il punto c'è uno spazio che hai dimenticato

  15. #45
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Non so perché non mi funziona, mi dice che non può caricare l'attributo Main-Class, cmq se a te funziona, ringrazio tutti per l'auto e vedrò in seguito di risolvere il problema.

    Sevenjeak
    Software developer and much more

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •