Maven和Eclipse Mars编译java 1.8错误

bor*_*ack 8 java eclipse maven

我用Eclipse

 Version: Mars.2 Release (4.5.2)
 Build id: 20160218-0600
Run Code Online (Sandbox Code Playgroud)

和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"
Run Code Online (Sandbox Code Playgroud)

我的%JAVA_HOME%设置为

C:\Program Files\Java\jdk1.8.0_60
Run Code Online (Sandbox Code Playgroud)

我的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)
Run Code Online (Sandbox Code Playgroud)

我用-vm(java jdk版本)运行eclipse,我在eclipse中添加了外部maven安装.在我导入项目并获得strang行为之后.有些类在eclispe中是红色的,有些则不是.我用javap -version检查它们都是用主要版本52编译的.我创建了新的工作区并获得了相同的结果.很奇怪.如果我用eclipse打开一个"红色"Java类并保存它就可以了(没有编译错误).

我真的不知道是什么问题.

我在日食中遇到的错误

Syntax error on token "package", assert expected
Syntax error on token "import", throw expected
Run Code Online (Sandbox Code Playgroud)

作为父pom我使用版本1.3.3-RELEASE的spring-boot-starter-parent我还指定了我所知道的所有属性,如java.version,maven.compiler.source/target和项目构建源和输出编码.还尝试定义maven编译器插件.没有帮助.

提供代码示例

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

看起来它总是依赖于我把类放入的包.用一些包它只是正常编译它有一些它有下面的错误

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
Run Code Online (Sandbox Code Playgroud)

不同包中的完全相同的类没有产生该错误.只是在特定的包装中.任何想法,我可以检查?

Sbo*_*odd 6

埋藏在某个地方可能是一个导致所有其他错误的实际编译错误.专注于此.在我的情况下,我有一个文件丢失了}.我通过浏览整个错误列表找到了没有Syntax error on token或的错误,从而找到了该文件foo cannot be resolved to a bar.

来自评论:

就我而言,另一个文件中存在未解决的冲突.显然,日食,火星和/或java8日食编译器无法编译/某些种类的相关文件编译错误后,建立一个有意义的方式与其他文件,而不是喷什么似乎是不能建办文件乱码的错误对坏的依赖

(这个答案基于Richard Sitze的评论,对于将来发现这个问题的其他人来说.)