2014-09-11 4 views
0

Я только что обновил свои NetBeans с 8.0 до 8.0.1 и мой JDK с 1.8.0 до 1.8.0u20. Вероятнее всего, моя проблема вызвана jdk-обновлением.Java 8 Lambda Autoboxing Reduce-Method

До обновления я был в состоянии собрать эту строку кода:

int sum = myIntegerList.stream().reduce(0, (a, b) -> a + b, (c, d) -> c + d); 

Сейчас эта привычка компилировать больше. NetBeans сообщает мне, что «основной класс не может быть найден или загружен».

Теперь я должен написать это:

Integer sum = myIntegerList.stream().reduce(0, (a, b) -> a + b, (c, d) -> c + d); 

или

int sum = (int) myIntegerList.stream().reduce(0, (a, b) -> a + b, (c, d) -> c + d); 

или

int sum = myIntegerList.stream().reduce(0, (Integer a, Integer b) -> a + b, (Integer c, Integer d) -> c + d); 

Кто-нибудь знает, почему это не работает больше? Я делаю что-то неправильно?

+1

«основной класс не может быть найден или загружен» - это не ошибка компиляции, это просто означает, что NetBeans не знает, какой класс содержит 'public static void main (String [] args)' метод, или вы пытаетесь запустить класс, который не имеет метода 'main'. Это не настоящая причина проблемы. – Jesper

+1

Я пробовал компилировать ваш код в командной строке с помощью JDK 8u20. Компилятор с ошибкой «NullPointerException»! Это похоже на ошибку в компиляторе JDK 8u20. – Jesper

+0

Рад слышать, что, скорее всего, это не моя ошибка. Спасибо! – jbw

ответ

1

Это, кажется, ошибка в версии jdk 1.8.0u20, которая исправлена ​​уже в начале 1.8.0u40. Однако у Netbeans, похоже, есть своя копия проблемного компилятора, который мешает при попытке запустить скомпилированный код. Таким образом, недостаточно изменить jdk проекта и среду Netbeans на другой jdk, сообщается о NullPointerException.

Единственное решение - отключить автоматическую компиляцию (Project Properties/Build/Compiling → Compile on Save) и выполнить чистую сборку проекта. Затем он должен работать без ошибки «не могу найти основной класс». (NullPointerException будет по-прежнему возникать в фоновом режиме время от времени, но это больше не мешает компиляции и запуску)

+0

Я могу скомпилировать его с помощью вашего решения. Надеюсь, NetBeans скоро это исправит. Благодаря! – jbw

Смежные вопросы