编译版本 - eclipse,maven

时间:2012-03-19 01:18:15

标签: java eclipse maven compiler-construction

我最近受到一些代码的攻击,这些代码通过我们的部署周期而不会抛出任何编译错误(我们认为)......

有问题的代码使用自Java 1.7以来的新静态方法Integer.compare

服务器环境在Java 1.6上运行。虽然我们的开发环境安装了Java 1.7。

我们的假设是,将项目首选项设置为JavaSE-1.6合规性至少会给我们编译有关代码的警告,但是在eclipse中没有可见的警告或错误。

项目>属性> java编译器> JDK合规性>在java构建路径上使用来自执行环境'JavaSE-1.6'的合规性

其次,我们使用maven编译最终部署。 pom显然是为了遵守1.6编译器:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <optimize>true</optimize>
    </configuration>
</plugin>

但是maven构建使用问题代码成功运行。

如果代码在早期的Jvm中不能正常编译,我怎么能告诉maven和eclipse都失败?

谢谢,保罗。

2 个答案:

答案 0 :(得分:2)

在开发环境中安装java 1.6,然后在eclipse中右键单击项目,转到Properties-&gt; Java Build Path。转到Libraries选项卡并删除java 1.7 JRE,然后添加java 1.6 JRE。

我不太熟悉maven来回答那一半。

答案 1 :(得分:2)

使用maven animal sniffer插件告诉您何时使用不向后兼容的API。我还被告知Java 1.7有一个功能,但我没有个人经验。