Java Maven和System.lineSeparator
Maven 3、Windows 7、JDK1.7.0_51 我有以下非常简单的Maven POMJava 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
<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
(注意,同样的问题也适用于从同一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());
}
}