2014-02-10 30 views
1

java.lang.Long.compare(x,y)方法存在于Java 7中,但不存在于Java 6中。很显然,如果部署了使用此方法的代码,则会导致NoSuchMethodException到运行Java 6的服务器。在maven和/或eclipse中强制实现java 6源代码

然而,即使在eclipse中将源代码兼容级别设置为1.6并且maven编译器源代码&将目标设置为1.6,Maven和Eclipse仍然在拾取错误。

除了将我的JRE降级到6之外,有没有一种方法可以在Eclipse中执行完整的Java 6兼容性?

回答

4

这就是为什么animalsniffer-maven-plugin介绍:

动物嗅探器提供的工具可帮助验证用较新的JDK/API编译类是与旧的JDK/API兼容。

0

有一种方法来cross-compile Java源代码,但最简单的方法是使用min。在开发过程中创建工件(JAR等)时需要JDK版本。

- >在开发和发布过程中使用JDK 6。

但请注意,Oracle的JDK 6已到达终止时限,如果您没有与Oracle(或使用不同供应商提供的JDK)的特殊支持合同,强烈建议升级到Java 7。

注意:源代码级别只能确保您使用的是该版本支持的语法结构,而目标级别只能确保生成的类文件符合指定版本的字节代码。

1

这就是我放在我的POM中。

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > 


    ... 

    <properties> 
    <java-version>1.6</java-version> 
    </properties> 

    ... 

    <build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <configuration> 
       <source>${java-version}</source> 
       <target>${java-version}</target> 
       <compilerArgument>-Xlint:all</compilerArgument> 
       <showWarnings>true</showWarnings> 
       <showDeprecation>true</showDeprecation> 
      </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

一旦我在我的POM中定义了我,请右键单击项目并转到Maven> Update项目。这会将pom中的所有设置应用到eclipse项目中,以确保两者同步。

就JDK而言,我使用最新的JDK,但编译为较低版本。我们目前使用的是JDK 7,但是编译为6.这样可以让您在编译器仍然可以使用与版本6兼容的7个版本中引入的任何优化。

相关问题