Search in the blog:

2008-07-27

Почему у Java нет шансов (о проблемах для конечных пользователей)

Я и раньше считал, что Java будет тяжело продвинуться на рынке т.н. конечных пользователей. Но теперь считаю, что шансов практически нет.

Все дело в том, что Sun больше удается создавать монстробразные форматы/спецификации/библиотеки, чем заниматься доведением пользовательских интерфейсов. Особенно хорошо это видно на примере Java Web Start. Но речь пойдет не только о нем, но и о Java RE и Java SDK.

Так получилось (причины до сих пор полностью не ясны), что у меня перестала работать JavaRE/SDK SE 6u5. В частности, перестали запускаться Java Web Start приложения. Перестал запускаться javaws -viewer. В обоих случая на экран ничего не выводилось, просто отсутствие реакции.

Кроме этого, перестала запускаться иконка Java в панели управления Windows. При этом выводился диалог с текстом навроде "Could not find the main class".

Не буду утомлять описанием всего, что я пытался делать. Много разных действий, десяток установок/удалений JRE/JSDK, чистка реестра и файлов со словом "java" и т.п. Эффекта не было.

Долгие поиски в Интернете, но толкового совета найти не удалось. Все сводилось к "проверьте на вирусы". Но вирусов нет. Единственное, увидел упоминание, что в похожем случае у человека Java заработала под другой учетной записью. Проверил, действительно заработала. Но под основной - так и не работала. Но уже стало ясно, что проблема либо в личных файлах, либо в пользовательской ветке реестра. Но что именно?

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4975888 - здесь есть упоминание про подобную проблему, но в данном случае это не помогло, поскольку каталог "Documents and Settings\\Application Data\Sun\Java\Deployment" я удалял постоянно руками перед установкой.

Но разглядывание файла deployment.properties навело на мысль подменить строку deployment.javaws.jre.0.path=C\:\\Program Files\\Java\\jre1.6.0_05\\bin\\javaw.exe
на
deployment.javaws.jre.0.path=C\:\\Program Files\\Java\\jre1.6.0_05\\bin\\java.exe

Тем самым надеялся увидеть хоть какую-нибудь информацию об ошибке.

Сказало - сделано. И здесь появился лучик надежды, поскольку удалось увидеть в чем проблема. А проблема в возникающем исключении:
===
java.lang.ExceptionInInitializerError
at com.sun.deploy.util.DeployUIManager.setLookAndFeel(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: -60397977 incompatible with Text-specific LCD contrast key
...
===

Ага, простой поиск по тексту вывел на ошибку: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6503988

Далее дело техники, поиск дал информацию о ветке HKEY_CURRENT_USER\Control Panel\Desktop, где в FontSmoothingGamma было указано то странное значение. Твикером от MS перенастроил ClearType, значение поменялось на более адекватное. Как результат: все заработало.

Ужас, конечно. Мало того, что странное (пусть даже так) значение приводит к выходу из программы, но вот как с такой диагностикой можно надеятся на то, что Java будет использоваться обычными пользователями? Да никогда, если никаких шагов в этом направлении не будет сделано. И от Sun, похоже, ничего ожидать не приходится.

1 comment:

  1. Этот баг все еще не исправлен и мучает людей - Minecraft, Arduino-IDE, IDEA перестают запускаться из-за этой ошибки. А ведь почти 10 лет прошло.

    ReplyDelete

Blog Archive