2016-04-12 48 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