如果我使用Java 8库来编写应用程序并尝试使用Java 6编译器对其进行编译,那么构建是否会失败?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果我使用Java 8库来编写应用程序并尝试使用Java 6编译器对其进行编译,那么构建是否会失败?相关的知识,希望对你有一定的参考价值。
我的笔记本电脑上有Java 8。我使用java.time库编写一个小代码片段,使用Eclipse IDE v4.9(2018-09发行版)计算应用程序处理时间。该项目使用Java 1.6编译器版本。然后我在我的笔记本电脑上运行应用程序,它运行没有任何错误,它产生了预期的输出。然后我使用Java 1.6编译器将应用程序导出到war文件中,以在运行Java 1.7 vm的tomcat 6服务器中运行它。我面临以下情况:
- 日志文件中没有错误。日志级别设置为调试。
- 应用程序处理数据库行并基于某些逻辑,插入4个不同的数据库表中。在轮询输入数据库表时,应用程序未捕获有效的输入行。
- 我在笔记本电脑上安装了Java 7,使Java 7成为工作区JRE,代码片段引发了编译错误。
我的问题是,当我使用Java 6编译器来编译基于Java 8库的代码时,构建是否应该失败?在整个练习期间,没有任何错误被应用程序抛出,并且它在我的笔记本电脑上成功运行并产生了预期的输出(显然是因为我的笔记本电脑具有Java 8 vm)。我找到问题的根本原因是纯粹的意外。这是Java错误还是已知问题?
更新:我不是在寻找问题的解决方案。我正在寻找Java编译器行为的解释。
包java.time
仅在Java 8中引入。因此,如果您使用它,您的代码将无法在以前的JVM版本上运行。
您应该更改Tomcat的JVM版本或从项目中删除java.time
相关代码。
如果您使用maven,您的代码将被运行。但是您必须确保仅使用所选Java版本的功能。
是的,如果您使用java 7+版本中引入的功能,它可能会失败。引用一些:
- java.time库。
- Diamond语法:List list = new ArrayList <>();
- Lambda或流函数。
- switch语句中的字符串。
- Iterable接口中的forEach()方法。
- 接口中的默认和静态方法。
这不是一个完整的列表,只是一些例子。
以上是关于如果我使用Java 8库来编写应用程序并尝试使用Java 6编译器对其进行编译,那么构建是否会失败?的主要内容,如果未能解决你的问题,请参考以下文章