2016-02-06 3 views
1

Я работал в 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.

ответ

0

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

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

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