[英]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.