Речь пойдёт о джаве и двух чудесных IDE -
eclipse и
IntelliJ IDEA. Тестировалось всё в самых последних на момент написания статьи версиях этих программ под windows xp и какой-то там убунтой (десятой, чтоли).
Внимание, загадка! Что означает это сообщение об ошибке, выдаваемое идеей при попытке запуска программы (программа простенькая, четыре строчки):
Exception in thread "main" java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
Ответ - дальше.
Внимание, код программы:
public class Program {
public void main(String[] args) {
}
}
Косяк очевиден - нету ключевого слова static. Кстати, вот как реагирует на это эклипс:
java.lang.NoSuchMethodError: main
Exception in thread "main"
Это всё же более адекватное сообщение об ошибке, не так ли?
В целом, я считаю идею более прекрасной средой разработки, чем эклипс, но этот идеевский стек трейс мне просто вырвал мозг. Тупил минут десять, пока дошло, в чём же дело.
И, да - пошаговая инструкция для воспроизведения шыза следует:
- Создаём в идее новый java-проект с нуля.
- Добавляем пустой класс
- Добавляем в него public static void main(String[] args). Можно так: Ctrl+J, psvm.
- Запускаем (Alt+shift+F10). Программа выполняется успешно.
- Удаляем слово static.
- Запускаем опять (Shift+F10).
Не помню уж, как я додумался удалить статик и запустить программу. Возможно, это был вообще не я. Так что, друзья, будьте внимательны, любите лудей - и
лучики счастья непременно вас коснутся.
UPD:
IDEA-54009. Я люблю JetBrains. Риалне очень внезапно отреагировали - половины суток не прошло с момента публикации моего пста в унылом бложике и твиттере до регистрации бага в ютреке. Уважение и поклон.