Как вы упомянули, проверка свойства System следующим образом, вероятно, является самым чистым способом:
private boolean isRunningJavaWebStart() {
return System.getProperty("javawebstart.version", null) != null;
}
В производственной системе я использовал вышеупомянутую технику в течение многих лет.
Вы также можете попробовать проверить, есть ли какие-либо свойства, начинающиеся с "jnlpx". но ни один из них действительно "не гарантирован", чтобы быть там или насколько я знаю.
Альтернативой может быть попытка создания службы загрузки, предложенной нами Томом:
private boolean isRunningJavaWebStart() {
try {
DownloadService ds = (DownloadService) ServiceManager.lookup("javax.jnlp.DownloadService");
return ds != null;
} catch (UnavailableServiceException e) {
return false;
}
}
Конечно, у этого есть обратная сторона - связывать ваш код с этим API.