我导入了一个Maven项目,它使用Java 1.5,即使我有1.6配置为我的Eclipse默认首选项->Java->安装的jre。

当我将Maven项目更改为使用1.6 JRE时,它仍然有从项目使用Java 1.5时遗留下来的构建错误(我在前面描述了这些构建错误:我使用m2eclipse构建错误,但在命令行上没有使用maven2—是我的m2eclipse配置错误吗?)

我将删除该项目,然后再试一次,但我想确保这次它从一开始就使用Java 1.6,看看这是否消除了构建问题。

我如何确保项目在导入时使用Java 1.6 ?


当前回答

如果你使用Tycho和Maven来构建bundle,还有一个可能的原因是你在manifest文件(manifest.mf)中定义了错误的执行环境(Bundle-RequiredExecutionEnvironment)。例如:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Engine Plug-in
Bundle-SymbolicName: com.foo.bar
Bundle-Version: 4.6.5.qualifier
Bundle-Activator: com.foo.bar.Activator
Bundle-Vendor: Foobar Technologies Ltd.
Require-Bundle: org.eclipse.core.runtime,
 org.jdom;bundle-version="1.0.0",
 org.apache.commons.codec;bundle-version="1.3.0",
 bcprov-ext;bundle-version="1.47.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.5
Export-Package: ...
...
Import-Package: ...
...

对我来说,其他一切都还好。编译器插件(正常的maven和tycho)被正确地设置了,由于清单,仍然生成了旧的遵从级别。我想我也有同样的经历。

其他回答

<project>

    <!-- ... -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

我把这个添加到项目描述下面的pom.xml中,它起作用了:

<properties>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
</properties>

如果有人想知道为什么Eclipse仍然将J2SE-1.5库放在Maven项目的Java构建路径上,即使Maven .compiler.release属性指定了Java版本>= 9(截至2020年10月,即Eclipse版本2020-09,包括Maven版本3.6.3):Maven默认使用Maven编译器插件的3.1版本,而release属性仅在3.6版本中引入。

因此,当使用release属性时,不要忘记在pom.xml中包含Maven编译器插件的当前版本:

<properties>
    <maven.compiler.release>15</maven.compiler.release>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
        </plugin>
    </plugins>
</build>

或者,直接在插件配置中指定Java版本,但可能不那么突出:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <release>15</release>
            </configuration>
        </plugin>
    </plugins>
</build>

这拾起了Line对已接受答案的评论,如果我早点看到它,就可以节省我另一个小时的搜索时间。

要更改JDK版本,您可以执行以下操作:

1-项目>属性 2-进入Java构建路径 3-在Libraries中选择JRE System…点击编辑 4-选择合适的版本并验证

项目特定设置

另一个可能出错的地方是在Eclipse中的项目特定设置中。

项目属性:单击您的项目和以下之一: Alt + Enter 菜单>项目>属性 右键单击项目>项目属性(菜单中的最后一项) 点击“Java编译器” 取消勾选“启用项目特定设置”(或手动更改所有设置)。

由于客户的需求,我们启用了它们,使我们的项目保持在1.6版本。当它需要升级到1.7时,我们遇到了困难,因为我们需要全面更改java版本:

项目的POM Eclipse工作区默认值 项目特定设置 执行虚拟机(一切都使用1.6)