2016-04-12 80 views
8

我使用Eclipse的Maven的Eclipse和火星編譯Java 1.8的錯誤

Version: Mars.2 Release (4.5.2) 
Build id: 20160218-0600 

和Maven(MVN -v)

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00) 
Maven home: C:\Daten\maven 
Java version: 1.8.0_60, vendor: Oracle Corporation 
Java home: C:\Program Files\Java\jdk1.8.0_60\jre 
Default locale: de_DE, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos" 

我的%JAVA_HOME%設定爲

C:\Program Files\Java\jdk1.8.0_60 

和我的java是(java -version)

java version "1.8.0_60" 
Java(TM) SE Runtime Environment (build 1.8.0_60-b27) 
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 

我使用-vm(java jdk版本)運行eclipse,並在eclipse中添加了外部maven安裝。在我導入了一個項目並獲得束縛行爲之後。有些課程在eclispe中是紅色的,有些則不是。我使用javap -version進行了檢查,並且它們都使用主版本52進行編譯。我創建了新的工作空間並獲得了相同的結果。很奇怪。如果我用eclipse打開一個「紅色」Java類並保存它,它就會變好(沒有編譯錯誤)。

我真的不知道是什麼問題。

錯誤我得到了日食

Syntax error on token "package", assert expected 
Syntax error on token "import", throw expected 

的父POM我用彈簧引導起動父母與版本1.3.3-RELEASE 我還指定了所有我知道像java.version屬性, maven.compiler.source/target和項目構建源代碼和輸出編碼。也試圖定義maven編譯器插件。沒有幫助。

提供的代碼示例

package com.test; 
public class AExample { 
    public static void main(String[] args) { 
     System.out.println(args.length); 
    } 
} 

它看起來是在包裝上完全以dependend我把類英寸 一些包裝它只是編譯正常一些它有以下誤差修改

com.test cannot be resolved to a type AExample.java line 1 
Illegal modifier for the local class AExample; only abstract or final is permitted AExample.java line 3 
Syntax error on token "package", assert expected AExample.java line 1 
Syntax error, insert "ClassBody" to complete ClassDeclaration AExample.java line 3 
The nested type AExample cannot hide an enclosing type AExample.java line 3 

在不同的包中完全相同的類不會產生該錯誤。只是在一個特定的包裝。任何想法我可以檢查?

+0

您是否使用了新的M2E插件(附帶日食或至少與wtp包),舊版本在新版本中表現怪異。你有沒有檢查你的工作場所屬性:Java> JRE是Java 8? – Andy

+0

是它的me2插件,是的,我確定使用1.8。在java中 - > jre和java - >在eclipse中編譯器 – borehack

+0

錯誤是不夠的;顯示產生它們的代碼。 –

回答

5

埋在某處可能是導致所有其他錯誤的單個實際編譯錯誤。專注於此。在我的情況下,我有一個文件丟失}。我能夠通過撇取整個錯誤列表來找到不是Syntax error on tokenfoo cannot be resolved to a bar的錯誤。

從評論:

在我的情況下,在另一個文件中未解決的衝突。顯然,eclipse-mars和/或java8 eclipse編譯器無法在依賴文件中發生某種類型的編譯錯誤後以有意義的方式編譯/構建其他文件,而是將似乎無法構建的文件看起來是亂碼錯誤到壞的依賴(基於這個答案上理查德Sitze的評論,對別人誰在將來發現了這個問題。)

+0

謝謝,這正是我的情況。我有一個以'ClassName ::'結尾的跳轉行,顯然這導致編譯器基本上在項目中的每個文件上產生了600多個錯誤。 – BeeOnRope