为了账号安全,请及时绑定邮箱和手机立即绑定

如果我使用 Java 8 库编写应用程序并尝试使用 Java 6 编译器对其进行编译

如果我使用 Java 8 库编写应用程序并尝试使用 Java 6 编译器对其进行编译

慕工程0101907 2022-07-20 16:48:31
我的笔记本电脑上有 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 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

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



查看完整回答
反对 回复 2022-07-20
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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

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


查看完整回答
反对 回复 2022-07-20
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

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

  1. java.time 库。

  2. 菱形语法:List list = new ArrayList<>();

  3. Lambda 或流函数。

  4. switch 语句中的字符串。

  5. Iterable 接口中的 forEach() 方法。

  6. 接口中的默认方法和静态方法。

这不是一个完整的列表,而是一些示例。


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号