Programma Java che su Windows 8.1 fa le bizze

di il
6 risposte

Programma Java che su Windows 8.1 fa le bizze

Ho aperto qui la discussione, perchè temo che il problema non stia tanto in Java quanto nel SO,
ma mi rimetto alla maggior esperienza di altri utenti o dei moderatori.

Sto cercado di realizzare un programma che oltre a fare le sue cose si comporti come segue.
Se al momento dell'attivazione si accorge che una precedente istanza dello stesso programma è attiva deve inviare un messaggio a quella istanza per mandarla in primo piano e lei deve terminare.
Un comportamento di questo tipo ce l'ha per esempio Notepatd++.

Il risultato di riconoscere la precedente istanza l'ho ottenuto con i thread e i socket, grazie alle indicazioni di @andbin nel forum Java.
E riesco anche a portare in primo piano la precedente istanza sia su Windows XP che su Kubuntu 14.04.

Su Windows 8.1 invece l'applicazione ha un comportamenteo strano.
Preciso che a questa applicazione ho associato una combinazione di tasti di scelta rapida per l'attivazione:
per esempio <Ctrl><Shift><K>.

La prima attivazione la faccio con <Ctrl><Shift><K> e parte regolarmente.
La seconda attivazione, se la faccio ancora con <Ctrl><Shift><K> non succede nulla e se la prima istanza è dietro a qualche altra finestra, resta li.
Se invece attivo la seconda istanza dal menù di Start di Windows funziona correttamente, ovvero la prima istanza viene portata in primo piano e la seconda si chiude regolarmente.

Non capisco il perchè di questa differenza di comportamente in base al modo in cui la eseguo.
Qualcuno ha qualche idea?

6 Risposte

  • Re: Programma Java che su Windows 8.1 fa le bizze

    Sapevo che forge un programma che si basa su Java avesse dei problemi su java 8 prova a installare java 7 e vedere cosa succede.
  • Re: Programma Java che su Windows 8.1 fa le bizze

    Ti ringrazio per l'interessamento.
    In realtà, non l'ho precisato, ma sto già usando Java 7, per compatibilità con l'ambiente di sviluppo su Windows XP e Kubuntu 14.04.
  • Re: Programma Java che su Windows 8.1 fa le bizze

    Chiedo scusa ma sono abbastanza disperato, perché non riesco a trovare una soluzione.
    Proprio nessuno ha idea di dove io possa indagare per scoprire la causa di questo comportamento e quindi trovare un rimedio?
  • Re: Programma Java che su Windows 8.1 fa le bizze

    Aggiornamento:
    dopo mesi di disperazione cercando di capire come modificare il mio programma ... oggi mi è venuta l'ispirazione ...
    Ho provato ad associare una combinazione di tasti di scelta rapida ad un altro mio programma java e ... sorpresa ...
    non mi parte la seconda istanza dello stesso programma.
    Ho provato con Firefox e invece partono due istanze!
    Quindi a questo punto devo dedurre che c'è qualcosa con il RE di Java, che non permette l'esecuzione di due istanze dello stesso jar con una sequenza di tasti di scelta rapida.

    Ma a questo punto le domande sono:
    Perché Java si comporta così?
    E c'è modo di bypassare questo comportamento?
  • Re: Programma Java che su Windows 8.1 fa le bizze

    Anche se mooooolto in ritardo, e non la leggera' nessuno, nemmeno l'autore, il problema e' ovvio:

    le parole magggggiche sono socket e il fatto che parte un'unica istanza.

    L'applicazione fa partire un servizio su un certo indirizzo IP & porta.

    La seconda istanza dell'applicazione NON PUO' far partire lo stesso servizio sulla STESSA COPPIA IP & porta!
  • Re: Programma Java che su Windows 8.1 fa le bizze

    migliorabile ha scritto:


    Anche se mooooolto in ritardo, e non la leggera' nessuno, nemmeno l'autore, il problema e' ovvio:
    Ciao, grazie per l'interessamento. Siccome ho attiva la notifica alle risposte, ho visto il tuo post.

    migliorabile ha scritto:


    le parole magggggiche sono socket e il fatto che parte un'unica istanza.
    ...
    La seconda istanza dell'applicazione NON PUO' far partire lo stesso servizio sulla STESSA COPPIA IP & porta!
    Forse ti è sfuggito che nel primo post ho specificato: "Se invece attivo la seconda istanza dal menù di Start di Windows funziona correttamente, ovvero la prima istanza viene portata in primo piano e la seconda si chiude regolarmente."
    Quindi il meccanismo che uso all'interno del programma Java tramite i socket per verificare l'esistenza dell'istanza precedente, funziona egregiamente.
    Il problema che ho con Win 8.1 (perché invece su Ubuntu funziona regolarmente) è solo nel meccanismo di chiamata del jar tramite tasti di scelta rapida.

    In realtà successivamente ho trovato una soluzione, ma non mi sono ricordato di aggiornare questa discussione.
    Invece di associare ai tasti di scelta rapida l'esecuzione del jar, gli associo l'esecuzione di un file vbs che si posiziona nella cartella del file jar e poi lo esegue.
    E' un po più lenta l'attivazione ma sembra funzionare.
    Il perché non mi è chiaro e probabilmente rimarrà un mistero, ma almeno mi ha risolto il problema.
Devi accedere o registrarti per scrivere nel forum
6 risposte