Прошу прощения, чтобы подтвердить ваши опасения, но это не может быть сделано в Java.
Поскольку Windows Explorer - это тот, кто контролирует, Icon Overlay является своего рода плагином.Он должен быть реализован как DLL (не JNI, а настоящая нативная DLL) и зарегистрирован в реестре Windows.Как вы видели в статье CodeProject , ваша DLL должна реализовывать определенный интерфейс - IShellIconOverlayIdentifier
.
Взять, к примеру, реализацию TortoiseSVN .
DLL TortoiseSVN загружается Проводником и подключается к его процессу:
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /* lpReserved */)
{
...
if (dwReason == DLL_PROCESS_ATTACH)
...
Чтобы сделать это в Java, вам нужно написать DLL, которая бы загружала JVM и ваш JAR, что было бы излишним.
Что касается наложения иконки в трее, то ваше приложение на Java находится под контролем, поэтому это можно сделать.