Я некоторое время работал в jGRASP и только начал работать с лямбда-выражениями в Java. Я могу компилировать программы с лямбда-выражениями, но когда я пытаюсь их запустить, я всегда получаю эту ошибку:
В файле не найдены основные методы, апплеты или мидлеты.
Пример программы:
public class SquareComputer {
interface IntegerMath {
int operation(int a);
}
public int operateUnary(int a, IntegerMath op) {
return op.operation(a);
}
public static void main(String... args) {
SquareComputer myApp = new SquareComputer();
System.out.println(myApp.operateUnary(3, a -> a*a));
}
}
Если я закомментирую последнюю строку, то программа скомпилируется и запустится как положено (конечно, ничего не делая).
Обратите внимание, что эта программа является урезанной версией примера калькулятора в Oracle. учебник здесь. Если я использую всю программу Калькулятора, происходит то же самое: компилируется, но не может найти основной метод для запуска; но закомментируйте строки, используя лямбда-выражения, и все работает нормально. То же самое и с другой программой, над которой я действительно работаю; любая отдельная строка, скомпилированная с лямбда-выражением, приводит к тому, что программа не может найти основной метод.
Это проблема с jGRASP, моей установкой Java, моим пониманием или чем-то еще? И как я могу это решить?
Изменить: Еще несколько точек данных: если jGRASP отображает диаграмму UML, класс с лямбда-выражением однозначно помечается как «Внешний класс или интерфейс» (без лямбда-выражения он помечается как обычно). как «Класс проекта»).
Если я попытаюсь создать файл JAR через jGRASP с регулярным выражением, сначала jGRASP не сможет найти основной класс; но как только я укажу его, будет создан класс JAR, и я смогу успешно запустить его с желаемым поведением извне jGRASP.