Синтаксическая ошибка на токене (ах), неуместная конструкция для лямбда-выражения - PullRequest
0 голосов
/ 04 мая 2018

Я столкнулся с проблемой синтаксиса в следующем коде, используемом для потоков:

        btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e){
            new Thread(() -> {
                GrabberShowUsesCallable gs = new GrabberShowUsesCallable();
                //GrabberShow gs = new GrabberShow();
                ExecutorService executorService = Executors.newSingleThreadExecutor();
                Future<String> future = executorService.submit(gs);
                String cc;
                try {
                    //Add data to table
                    cc = future.get();
                    model.addRow(new Object[] {row,0,cc,0});
                    row=row+1;
                    Thread.currentThread().stop();
                } catch (InterruptedException | ExecutionException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }).start();
        }
    });

Я получил ошибку в строке 3 новой темы:

Несколько маркеров на этой линии - Синтаксическая ошибка на токене (ах), неуместна построить (ы) - Синтаксическая ошибка на токенах, удалите эти лексемы

В этой строке я получил две синтаксические ошибки, одну из ( ()

Синтаксическая ошибка на токене (ах), неправильная конструкция (ы)

и один из -> {

Синтаксическая ошибка на токенах, удалите эти токены

Код работал на 3 разных ноутбуках, кроме одного (мой ноутбук) столкнулся с этой проблемой. Я использую Eclipse с установленными jre 8.0 и jdk 8.0.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Если https://stackoverflow.com/a/50173565/139985 (установка уровня источника компилятора) не решит вашу проблему, то вот еще пара вещей, которые нужно проверить.

Лямбда-выражения - это функция Java 8+, поэтому:

  • Убедитесь, что JDK / JRE - это Java 8 или новее.
  • Убедитесь, что вы используете версию Eclipse, поддерживающую Java 8. Первым основным выпуском Eclipse, поддерживающим Java 8 "из коробки", была Eclipse Luna (R 4.4) .

Кроме того, если вы используете Maven, убедитесь, что POM-файл Maven явно указывает уровень источника Java:

Источником по умолчанию для Maven является Java 5, и это сожжет уровень источника, заданный вами в настройках Eclipse для вашего проекта.

0 голосов
/ 04 мая 2018

Убедитесь, что ваш исходный уровень java тоже java8, в настройках проекта eclipse переопределяет, если по умолчанию eclipse не является исходным уровнем java8. Это типичный упущение.

...