我的笔记本电脑上有 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 编译器行为的解释。
3 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
包java.time仅在 Java 8 中引入。因此,如果您使用它,您的代码将无法在以前的 JVM 版本上运行。
您应该更改 Tomcat 的 JVM 版本或java.time从项目中删除相关代码。
慕姐4208626
TA贡献1852条经验 获得超7个赞
是的,如果您使用 java 7+ 版本中引入的功能,它可能会失败。引用几个:
java.time 库。
菱形语法:List list = new ArrayList<>();
Lambda 或流函数。
switch 语句中的字符串。
Iterable 接口中的 forEach() 方法。
接口中的默认方法和静态方法。
这不是一个完整的列表,而是一些示例。
添加回答
举报
0/150
提交
取消
