Я работал в jGRASP некоторое время и только начал работать с лямбда-выражениями на Java. Я могу компилировать программы с лямбда-выражений, но когда я пытаюсь запустить их, я всегда получаю эту ошибку:Поддерживает ли jGRASP выражения Java лямбда?
No main methods, applets, or MIDlets found in file
Пример программы:
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 tutorial here. Если я использую всю программу Калькулятора, то происходит то же самое: компилирует, но не удается найти основной метод для запуска; но закомментируйте строки, используя лямбда-выражения, и он работает нормально. Аналогично для другой программы, над которой я действительно работаю; любая отдельная строка, скомпилированная с выражением лямбда, заставляет программу не найти основной метод.
Это проблема с jGRASP, или моей установкой Java, или моим пониманием, или чем-то еще? И как я могу это решить?
Edit: Еще несколько точек данных: Если у меня есть jGRASP отобразить диаграмму UML, класс с лямбда-выражения однозначно помечены как «Внешний класс или интерфейс» (без лямбда-выражения, он помечается как правило, как «Класс проекта»).
Если я пытаюсь сделать JAR-файл через jGRASP, с регулярным выражением, изначально jGRASP не может найти основной класс; но как только я укажу его, класс JAR будет создан, и я могу запустить его успешно, с поведением, которое я хотел, извне jGRASP.