我的笔记本电脑上有Java 8。我使用java.time库编写一个小代码片段,使用Eclipse IDE v4.9(2018-09发行版)计算应用程序处理时间。该项目使用Java 1.6编译器版本。然后我在我的笔记本电脑上运行应用程序,它运行没有任何错误,它产生了预期的输出。然后我使用Java 1.6编译器将应用程序导出到war文件中,以在运行Java 1.7 vm的tomcat 6服务器中运行它。我面临以下情况:
我的问题是,当我使用Java 6编译器来编译基于Java 8库的代码时,构建是否应该失败?在整个练习期间,没有任何错误被应用程序抛出,并且它在我的笔记本电脑上成功运行并产生了预期的输出(显然是因为我的笔记本电脑具有Java 8 vm)。我找到问题的根本原因是纯粹的意外。这是Java错误还是已知问题?
更新:我不是在寻找问题的解决方案。我正在寻找Java编译器行为的解释。
包java.time
仅在Java 8中引入。因此,如果您使用它,您的代码将无法在以前的JVM版本上运行。
您应该更改Tomcat的JVM版本或从项目中删除java.time
相关代码。
如果您使用maven,您的代码将被运行。但是您必须确保仅使用所选Java版本的功能。
是的,如果您使用java 7+版本中引入的功能,它可能会失败。引用一些:
这不是一个完整的列表,只是一些例子。