Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven和System.lineSeparator_Java_Maven_Version_Nosuchmethoderror - Fatal编程技术网

Java Maven和System.lineSeparator

Java Maven和System.lineSeparator,java,maven,version,nosuchmethoderror,Java,Maven,Version,Nosuchmethoderror,Maven 3、Windows 7、JDK1.7.0_51 我有以下非常简单的Maven 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

Maven 3、Windows 7、JDK1.7.0_51

我有以下非常简单的Maven 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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.gwl</groupId>
  <artifactId>test-lineseparator</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>
  • 我已经安装了jdk1.7.0_51作为默认构建环境
  • Maven编译器插件的默认src和目标参数为1.5
  • 直到1.7版本才引入System.lineSeparator()方法
  • Maven编译代码时没有问题。它将在1.7JRE/JDK下正常运行, 但1.6或更早版本的投诉

    线程“main”java.lang.NoSuchMethodError中出现异常:java.lang.System.lineSeparator()Ljava/lang/String

Q.为什么Maven在其编译器src参数默认为1.5时不抱怨System.lineSeparator()不存在?


(注意,同样的问题也适用于从同一POM生成的Eclipse投影。尽管1.5编译器符合性和设置了1.5执行环境,但没有任何抱怨)

编译为1.5意味着java代码结构/类文件设计处于1.5级-不要与jdk代码本身混淆

如果JDK1.7提供了一个rt.jar文件,其中包含System.java代码和一些方法,那么javac编译器无法知道它在1.6、1.5、1.4级别是什么(除非您有classes.zip并指定引导类路径)

让生活变得轻松
将正确的jdk用于正确的工作

“让生活变得轻松将正确的jdk用于正确的工作”这与我得出的结论相同,但解释得很好,谢谢!
public class TestLineSeparator {
    public static void main(String[] args) {
        System.out.print("This is a line using System.lineSeparator()." + System.lineSeparator());
    }
}