Eclipse默认JRE,项目合规性和使用的编译器之间的关系

时间:2014-08-22 07:47:33

标签: java eclipse maven ecj

我无法理解为什么我的Maven项目没有在Eclipse中构建并向我显示“ .class file 中的错误版本号”错误。

  • 我检查了所有依赖项并确保它们是为Java 6或更低版本构建的(使用此handy JAR version checking tool)。
  • 我打开了我的项目属性并确认我有项目特定的编译器设置,设置为合规级别1.6。
  • 我还确认我的构建路径上有Java 6库。

最后,我发现原因与为我的工作区选择的默认JRE有关。出于某种原因,这被设置为jdk1.5。将此值设置为高于此值(我选择了jdk1.8)解决了这个问题。最后,我必须选择jdk1.7以允许我的AspectJ编织正常工作。

我的问题是:为什么要解决这个问题?根据首选项页面,此设置仅影响将哪个JRE添加到新创建的Java项目的构建路径中。我无法理解为什么这会影响我构建项目的能力。有什么建议?似乎Eclipse使用默认的JRE选择来影响使用的编译器类型。

我正在使用m2e来绑定Eclipse和Maven。我的POM构建部分如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <!-- http://maven.apache.org/plugins/maven-compiler-plugin/ -->
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.5</version>
            <configuration>
                <complianceLevel>1.6</complianceLevel>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

0 个答案:

没有答案