Поддерживает ли jGRASP лямбда-выражения Java?

Я некоторое время работал в 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.


person Daniel R. Collins    schedule 06.02.2016    source источник


Ответы (1)


Я использовал устаревшую версию jGRASP (с 2013 года, до введения лямбда-выражений в Java в 2014 году, я полагаю). Обновление моей установки jGRASP до текущей версии устранило мои проблемы с поиском основного класса при компиляции лямбда-выражения.

Итак: Да, jGRASP в настоящее время поддерживает лямбда-выражения (по крайней мере, в версии 2.0.1_09). Но нет, до появления лямбда-выражений в Java (где-то после версии 2.0.0_03).

person Daniel R. Collins    schedule 06.02.2016