[英]Syntax error on token(s), misplaced construct(s) for lambda expression
我在用于线程的以下代码中遇到了语法问题:
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 台不同的笔记本电脑上运行良好,除了一台(我的笔记本电脑)遇到了这个问题。 我正在使用安装了 jre 8.0 和 jdk 8.0 的 Eclipse。
确保您的java源代码级别也是java8,在eclipse项目设置覆盖中,如果eclipse默认不是java8源代码级别。 这是典型的忽视。
如果https://stackoverflow.com/a/50173565/139985 (设置编译器源代码级别)不能解决您的问题,那么这里还有几件事需要检查。
Lambda 表达式是 Java 8+ 的一项功能,因此:
此外,如果您使用 Maven,请确保 Maven POM 文件明确指定 Java 源代码级别:
Maven 的默认源代码是 Java 5,这将破坏您在 Eclipse 设置中为项目设置的源代码级别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.