未使用的从Java 1.8导入lib并与Java 1.7一起运行

时间:2018-08-07 07:11:03

标签: classloader

我已经用Java 1.8编译了战争项目,在这里我意外地留下了一个未使用的lib,它是Java 1.8的一部分。其他所有lib都属于Java 1.7。

有人可以告诉我,如果我使用Java 1.7进行这场战争,这会产生影响吗?

AFAIK导入语句不会加载该类,当您对该类执行某些操作时,该类加载器会发生这种情况。

片段:

import java.util.stream.Collectors;

public class Test {

    public static void main(String[] args) {
       //testArrayList.stream().collect(Collectors.joining(","));
    }
}

1 个答案:

答案 0 :(得分:0)

如果您尝试在Java较低版本上运行jar,而该Java版本是用Java较高版本编译的。

然后,在使用java命令运行Java时会收到错误消息。

  

java.lang.UnsupportedClassVersionError:不支持的major.minor版本

显示的版本号描述了与类文件兼容的JRE的版本。

报告的主要数字是:

Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

(来源:维基百科)

要解决实际问题,您应该尝试使用Java JRE的较新版本运行Java代码,或为Java编译器指定目标参数,以指示编译器创建与Java早期版本兼容的代码。

例如,为了生成与Java 1.4兼容的类文件,请使用以下命令行:

javac -target 1.4 HelloWorld.java