【问题标题】:Maven & Eclipse Mars compile java 1.8 errorsMaven & Eclipse Mars 编译 java 1.8 错误
【发布时间】:2016-04-12 18:14:39
【问题描述】:

我使用 Eclipse

 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 类并保存它就可以了(没有编译错误)。

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

我在 Eclipse 中遇到的错误

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

作为父 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);
    }
}

看起来它完全依赖于我将课程放入的包。 对于某些软件包,它只是正常编译,有些软件包有以下错误

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

不同包中的完全相同的类没有产生该错误。只是在一个特定的包中。有什么想法可以检查吗?

【问题讨论】:

  • 您是否在使用新的 m2e 插件(随 eclipse 或至少随 wtp 包一起提供),旧的插件在新版本中表现得很奇怪。您是否检查过您的工作场所属性:Java > JRE 是 Java 8?
  • 是的,它的 me2 插件,是的,我确保使用了 1.8。在 java -> jre 和 java -> eclipse 中的编译器
  • 错误还不够;显示产生它们的代码。
  • 就我而言,另一个文件中存在未解决的冲突。显然,在依赖文件中出现某些类型的编译错误后,eclipse-mars 和/或 java8 eclipse 编译器无法以有意义的方式编译/构建其他文件,而是为无法构建的文件发出看似乱码的错误到坏的依赖。
  • @ Richard Sitze ...是的,这就是我检查并解决了其他问题的问题。在此之后,错误消失。真的很奇怪......谢谢。如果您作为 Anweser 给出,我可以接受答案吗?!

标签: java eclipse maven


【解决方案1】:

埋在某处可能是导致所有其他错误的单个实际编译错误。专注于此。就我而言,我有一个文件缺少}。我能够通过浏览 整个 错误列表找到不是 Syntax error on tokenfoo cannot be resolved to a bar 的错误的文件。

来自cmets:

就我而言,另一个文件中存在未解决的冲突。显然,在依赖文件中出现某些类型的编译错误后,eclipse-mars 和/或 java8 eclipse 编译器无法以有意义的方式编译/构建其他文件,而是为无法构建的文件发出看似乱码的错误到坏的依赖

(此答案基于 Richard Sitze 的评论,适用于将来发现此问题的任何人。)

【讨论】:

  • 谢谢,这正是我的情况。我有一条以ClassName:: 结尾的危险行,显然这导致编译器基本上对项目中的每个文件都进行了拟合,从而导致 600 多个错误。
  • 完美答案。 Eclipse 在我的项目中产生了大量错误。为了在我的情况下找到丢失的“}”,我从命令行运行了 java 编译器。经过数小时的搜寻,我在几秒钟内找到了罪魁祸首。
猜你喜欢
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 2018-07-11
  • 1970-01-01
  • 2015-08-29
  • 2016-05-04
相关资源
最近更新 更多