Eseguibile. jar molto più lento dell'esecuzione in Eclipse

di il
9 risposte

Eseguibile. jar molto più lento dell'esecuzione in Eclipse

Ciao a tutti. Vorrei porvi un quesito, magari qualcuno saprà aiutarmi. Sto realizzando un gioco platform 2D in Java (dopo averne creato uno come progetto per il Corso di Programmazione ad Oggetti in Facoltà) per conto mio, giusto perché mi piace programmare in Java e volevo unire la passione dei videogiochi retrò alla programmazione. So che non è il linguaggio migliore per i giochi, ma è solamente un mio interesse personale.
Ad ogni modo, tornando alla mia domanda: sto affrontando un problema che non mi si era mai presentato, ovvero se apro il gioco col doppio click esso va lentissimo. C'è molto lag ed è estremamente rallentato. Se lo eseguo all'interno di Eclipse, invece, è rapido e scattante come voglio io. Anche eseguendolo da terminale (recandomi nella directory del file .jar) è perfetto. L'unica situazione in cui non va come deve è lanciandolo col doppio click.
Pensavo magari fosse un fatto dovuto ad Eclipse che magari fa qualcosa dietro le quinte e fa andare bene il programma, ma dopo aver scoperto che anche eseguendolo da terminale accade ciò non so proprio cosa pensare. A qualcuno di voi si è verificata la medesima problematica ed è riuscito a risolvere? Apprezzo qualsiasi idea vi possa venire in mente:)
Grazie mille in anticipo:)

9 Risposte

  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Sharkstroke ha scritto:


    L'unica situazione in cui non va come deve è lanciandolo col doppio click.
    Runtime Java utilizzato in questo caso? Potrebbe infatti differire da: a) Eclipse e b) lancio "a mano".
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Runtime Java utilizzato in questo caso?
    Controllando la versione del JRE installata, trovo la 1.8.0_05.
    Su Eclipse, idem, viene utilizzata la 1.8.
    Non so che fare..
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Davvero nessuno mi sa aiutare?
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Sharkstroke ha scritto:


    Davvero nessuno mi sa aiutare?
    Purtroppo è un po' poco quanto hai detto. La tua applicazione fa uso di librerie esterne? (magari un framework grafico specifico per giochi?) Ci sono librerie "native" specifiche in ballo per qualche motivo?
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Purtroppo è un po' poco quanto hai detto.
    Hai ragione, mi scuso per i pochi dettagli forniti.
    La tua applicazione fa uso di librerie esterne?
    Le uniche librerie che utilizzo sono: java.util, java.awt, javax.swing. Non mi sembra di utilizzarne altre. Utilizzo la classe Graphics e Graphics2D per la grafica, ma anch'esse fanno parte di java.awt. Quello che proprio non capisco è il motivo per cui fino alla terza versione dell'eseguibile andasse tutto bene mentre ora, nemmeno avessi fatto modifiche particolari, mi si verifica questo problema. Sottolineo che al momento sono alla quarta versione dell'eseguibile e le uniche cose che ho fatto dalla terza alla quarta è stato inserire una nuova mappa nel gioco, che viene comunque caricata quando si supera il secondo livello per un fatto di ottimizzazione (proprio come la seconda mappa viene caricata una volta superato il primo livello), e un boss alla fine del primo livello (il quale, per ora, è solo un oggetto che non fa assolutamente nulla, viene solo disegnato).
    Ho provato a togliere il boss, ma niente. Leggendo su internet ho trovato casi simili al mio, ma sono stati risolti con metodi che nella mia situazione non sono applicabili oppure aggiornando la versione del JRE con cui viene lanciato il programma fuori da Eclipse.

    Il fatto è che solo con il doppio click ho tutto questo lag, utilizzando la stringa da terminale java -jar NomeGioco.jar funziona tutto regolarmente..

    Grazie per la disponibilità, comunque:)
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Sharkstroke ha scritto:


    Il fatto è che solo con il doppio click ho tutto questo lag, utilizzando la stringa da terminale java -jar NomeGioco.jar funziona tutto regolarmente..
    Se lo stesso jar funziona diversamente tra lancio "a mano" e lancio con "doppio-click", qualcosa di strano c'è di sicuro. La prima cosa che mi veniva in mente è che ci sono runtime Java differenti ... però hai già risposto su questo punto.

    Un'altra cosa che mi viene in mente è che perlomeno su Windows se la associazione della estensione .jar è quella impostata in origine dalla installazione di un JRE (cioè nessuno ci ha smanettato per cambiarla), viene lanciato javaw che è il launcher della JVM senza la "console".
    Non dovrebbe cambiare niente ma .... prova a lanciare tu a mano usando javaw invece che java. (se sei su Windows ma presumo di sì).

    Come altro consiglio: all'avvio della applicazione fai stampare da qualche parte (es. su file o magari più comodamente su una messagebox) tutte le system-property Java (vedi System.getProperties() ).
    Se dal lancio "a mano" al lancio "doppio-click" cambia qualcosa su queste ... allora è dubbio e si può indagare meglio.

    Ad ogni modo non so come è fatta la tua applicazione e il tuo codice. Sono certo che sei ben ferrato su AWT/Swing/Java2D se hai fatto un gioco ma potrebbe darsi che hai usato tecniche non ottimali o che possono dare problemi anche in caso di qualche cambiamento minimale o nel tuo gioco o nel runtime. Ma senza sapere/vedere di più non posso dire altro.
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Ti ringrazio infinitamente per i consigli, appena posso provo sia a lanciare usando javaw che a stampare su file le system property.
    Io comunque programmo su Mac, non Windows: e a tal proposito, ho provato ad eseguire il gioco su un PC dell'università con Windows e funziona tutto benissimo, non riscontro nessuno dei problemi che invece ho col doppio click nel Mac. Ad ogni modo, quando ho un attimo provo a fare quello che mi hai consigliato ed eventualmente aggiorno il thread.

    Grazie mille ancora!:)
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    Sharkstroke ha scritto:


    appena posso provo sia a lanciare usando javaw
    Io comunque programmo su Mac
    javaw che io sappia c'è solo su Windows (la gestione della console è differente). Su Linux/Solaris no e presumo nemmeno sui Mac. Ma non posso esserne certo.
  • Re: Eseguibile. jar molto più lento dell'esecuzione in Eclipse

    andbin ha scritto:


    Sharkstroke ha scritto:


    appena posso provo sia a lanciare usando javaw
    Io comunque programmo su Mac
    javaw che io sappia c'è solo su Windows (la gestione della console è differente). Su Linux/Solaris no e presumo nemmeno sui Mac. Ma non posso esserne certo.
    Ciao,

    per lanciare un jar da Linux basta dare
    java -jar nomeFile.jar
    Invece per vedere la versione installata
    java -version
Devi accedere o registrarti per scrivere nel forum
9 risposte