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>
以及以下非常简单的测试类
public class TestLineSeparator {
public static void main(String[] args) {
System.out.print("This is a line using System.lineSeparator()." + System.lineSeparator());
}
}
Maven编译代码没有问题。它将在1.7 JRE / JDK下运行正常, 但1.6或更早的抱怨
线程中的异常&#34; main&#34; java.lang.NoSuchMethodError:java.lang.System.lineSeparator()Ljava / lang / String;
问。为什么Maven在编译器src参数默认为1.5时不抱怨System.lineSeparator()不存在?
(注意,同样的问题适用于从同一个POM生成的Eclipse预测。尽管设置了1.5个编译器合规性和1.5个执行环境,但没有投诉)
答案 0 :(得分:1)
编译为1.5表示java代码结构/类文件设计为1.5级 - 不要与jdk代码本身混淆
如果jdk 1.7使用某些方法发送带有System.java代码的rt.jar文件,javac编译器无法知道1.6,1.5,1.4级别的内容(除非你有classes.zip并指定启动类路径)
请参阅javac source and target options
http://www.javaworld.com/article/2077388/core-java/what-version-is-your-java-code.html
让生活变得轻松 使用正确的jdk来做正确的工作