Your comments

если бы вы почитали ссылочку https://forums.oracle.com/forums/thread.jspa?threadID=2159870, то поняли, что проверка иконки в трее через getTrayIcons() не сработает - они после краша остаются на месте и проверка будет говорить что все ок, а в реальности иконки не будет.

по той же ссылке якобы нашли решение через reflections. хотя пожаловались на стабильность работы


try{
     Field theField = TrayIcon.class.getDeclaredField( "peer" );
     theField.setAccessible( true );
     theField.set( myIcon, null );
     Method theMethod = TrayIcon.class.getDeclaredMethod( "addNotify", new Class[]{} );
     theMethod.setAccessible( true );
     theMethod.invoke( myIcon, new Object[]{} );
} catch ( Throwable e ) {
     LOGGER.error( "Could not restore system tray icon", e );
}


если это чем то не устроит, то думаю и правда - достаточно дергать иконку при каждом срабатывании глобального хоткея - к примеру ctrl+H (показать окно) или вообще на всех хоткеях. сделал попытку что то с прогой сделать - и иконка перерисовалась. но тогда нельзя будет определить  запущена программа или нет ( для чего собственно иконка и нужна чаще всего)

думаю что остался, возможно нужно будет выключить aero


сообщения о краше скорее всего и нет, но должно быть какой то системное сообщение типа repaint или типа того.


возможно эти обсуждения на stackoverflow подскажут куда копать

http://stackoverflow.com/questions/8333820/restoring-java-systray-icon-after-explorer-crashes

http://stackoverflow.com/questions/7923645/how-to-re-add-icon-to-system-tray-after-explorer-exe-crash/7923753

https://forums.oracle.com/forums/thread.jspa?threadID=2159870

http://syedgakbar.wordpress.com/2008/07/14/restore-notification-area-icon-after-explorer-crash/



тут по виндовым сообщениям и таксбару

http://msdn.microsoft.com/en-us/library/cc144179(VS.85).aspx#Taskbar_


тут решение для сишников

http://www.tek-tips.com/faqs.cfm?fid=5937


тут пишут, что в java такое не получится сделать, надо делать костыли

http://board.jdownloader.org/showthread.php?p=81757

или стартовать прогу заново и та, обнаружив запущенную копию, даст ей сигнал чтобы восстановить иконку (что мне лично кажется совсем костыльным костылем ))) )

либо тупо удалять/восстанвливать иконку в трее каждые несколько секунд - что более удовлетворительно, если не будет каких то побочных эффектов