如果我使用Java 8库来编写应用程序并尝试使用Java 6编译器对其进行编译,那么构建是否会失败?

问题描述 投票:-1回答:3

我的笔记本电脑上有Java 8。我使用java.time库编写一个小代码片段,使用Eclipse IDE v4.9(2018-09发行版)计算应用程序处理时间。该项目使用Java 1.6编译器版本。然后我在我的笔记本电脑上运行应用程序,它运行没有任何错误,它产生了预期的输出。然后我使用Java 1.6编译器将应用程序导出到war文件中,以在运行Java 1.7 vm的tomcat 6服务器中运行它。我面临以下情况:

  1. 日志文件中没有错误。日志级别设置为调试。
  2. 应用程序处理数据库行并基于某些逻辑,插入4个不同的数据库表中。在轮询输入数据库表时,应用程序未捕获有效的输入行。
  3. 我在笔记本电脑上安装了Java 7,使Java 7成为工作区JRE,代码片段引发了编译错误。

我的问题是,当我使用Java 6编译器来编译基于Java 8库的代码时,构建是否应该失败?在整个练习期间,没有任何错误被应用程序抛出,并且它在我的笔记本电脑上成功运行并产生了预期的输出(显然是因为我的笔记本电脑具有Java 8 vm)。我找到问题的根本原因是纯粹的意外。这是Java错误还是已知问题?

更新:我不是在寻找问题的解决方案。我正在寻找Java编译器行为的解释。

java eclipse tomcat
3个回答
0
投票

java.time仅在Java 8中引入。因此,如果您使用它,您的代码将无法在以前的JVM版本上运行。

您应该更改Tomcat的JVM版本或从项目中删除java.time相关代码。


0
投票

如果您使用maven,您的代码将被运行。但是您必须确保仅使用所选Java版本的功能。


0
投票

是的,如果您使用java 7+版本中引入的功能,它可能会失败。引用一些:

  1. java.time库。
  2. Diamond语法:List list = new ArrayList <>();
  3. Lambda或流函数。
  4. switch语句中的字符串。
  5. Iterable接口中的forEach()方法。
  6. 接口中的默认和静态方法。

这不是一个完整的列表,只是一些例子。

© www.soinside.com 2019 - 2024. All rights reserved.