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

    Problema file jar (post-creazione)

    Salve,

    ho creato un'applicazione dotata di interfaccia che comprende alcune immagini; queste sono salvate in una cartella nominata "img", posizionata nella stessa directory in cui si trovano i file .class dell'applicazione!

    Creo regolarmente il file .jar dal prompt scrivendo la funzione nella giusta sintassi, ma nel momento in cui vado ad eseguire il file .jar, il programma parte e funziona perfettamente ma non visualizza le immagini nella cartella "img"!

    Da cosa dipende questo problema?

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Ok, tiriamo a indovinare: hai usato percorsi assoluti nelle tue classi?
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Ho scritto questo tipo di percorso -> img/immagine.jpg

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

    Re: Problema file jar (post-creazione)

    Originariamente inviato da VincenzoTheBest
    Creo regolarmente il file .jar dal prompt scrivendo la funzione nella giusta sintassi, ma nel momento in cui vado ad eseguire il file .jar, il programma parte e funziona perfettamente ma non visualizza le immagini nella cartella "img"!
    Quindi le immagini sono fuori dal jar. In tal caso: o usi path assoluti (pessima, pessima idea) oppure i path alle immagini devono essere relativi e questo "relativo" è inteso riferito alla directory "corrente" ovvero quella che è corrente nel momento in cui è stata avviata l'applicazione (e quale sia dipende appunto da come/con cosa è stata avviata).

    Se le immagini sono fisse e fanno parte della applicazione si possono mettere dentro il jar e caricarle come "risorse" (vedere Loading Images Using getResource).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Ok.. non posso che consigliarti di seguire il link di andbin

    però.. mi piacerebbe anche tu considerassi una piccola cosa: ti sta bene che il programma funzioni senza immagini? Credo di no. Ma allora non sarebbe il caso di lanciare una eccezione che interrompa il programma se le immagini non vengono trovate?
    Tieni a mente che se gestita correttamente questa eccezione dovrebbe stampare anche il nome completo del file che la tua applicazione cerca senza trovare. Se avessi fatto errori nei nomi del file, sarebbero subito evidenti.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  6. #6
    Grazie mille a andbin, sempre preciso ed esauriente!

    però.. mi piacerebbe anche tu considerassi una piccola cosa: ti sta bene che il programma funzioni senza immagini? Credo di no. Ma allora non sarebbe il caso di lanciare una eccezione che interrompa il programma se le immagini non vengono trovate? Tieni a mente che se gestita correttamente questa eccezione dovrebbe stampare anche il nome completo del file che la tua applicazione cerca senza trovare. Se avessi fatto errori nei nomi del file, sarebbero subito evidenti.
    Ok..ma quale tipo di eccezione dovrei gestire? Conosci il suo nome?

  7. #7
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Ok..ma quale tipo di eccezione dovrei gestire? Conosci il suo nome?
    Ogni volta che leggi un file, rischi di lancaire una FileNotFoundException.
    Ho ragione di credere che da qualche parte, in particolare dove cerchi di caricare le immagini, tu abbia ammazzato queste eccezioni.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  8. #8
    Non è detto! Potrei anche utilizzare un unico gestore try/catch e dunque gestire ogni tipo di eccezzione sfruttando il catch!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Pastore12
    Ho ragione di credere che da qualche parte, in particolare dove cerchi di caricare le immagini, tu abbia ammazzato queste eccezioni.
    Dipende cosa ha usato .... se ha usato ImageIcon, il costruttore non lancia eccezioni tipo FileNotFoundException!!!

    Per intenderci: new ImageIcon("non_esiste.gif");

    non lancia eccezioni ... semplice si ottiene un oggetto ImageIcon che contiene un oggetto Image i cui width/height sono -1 ... il che ovviamente non fa visualizzare nulla da nessuna parte (e senza eccezioni)!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Non è detto! Potrei anche utilizzare un unico gestore try/catch e dunque gestire ogni tipo di eccezzione sfruttando il catch!
    Se a te non giungono notizie dell'eccezione quando era di tuo interesse averne, allora questo si chiama omicidio colposo!

    Una eccezione trattata in questo modo durante la fase di debug (evidentemente la tua applicazione non è ancora del tutto pronta ):

    codice:
    try
    {
      ...
    }
    catch (Exception e)
    {}
    Non è gestita, è ammazzata!!!
    Invece dovrebbe essere almeno così:

    codice:
    try
    {
      ...
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
    Anche se da quanto ho detto prima, credo che questo errore non andava neppure catturato, ma doveva arrivare a far scoppiare la JVM interrompendo brutalmente l'applicazione.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

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.