当前位置: 首页 > 知识库问答 >
问题:

1.7 版版本中的源代码兼容性选项

楚权
2023-03-14

我们可以使用JDK 1.8编译器编译源兼容性选项设置为1.7的源代码吗?

ModuleA将此设置为1.7,ModuleB和ModuleC将此设置为1.8。我应该使用什么编译器来编译上述所有模块。我假设它应该是JDK 1.7。

共有3个答案

夹谷山
2023-03-14

我同意弗兰克的观点,你可能会面临运行时问题。我们通过使用较新的JDK编译应该在较旧的JRE上运行的代码来找到实际的代码。

锺离辰沛
2023-03-14

我想你有两个问题:

用jdk8编译一个为java7写的程序:没错,java就是以向后兼容著称的。

使用什么 jdk 编译具有不同源代码兼容性的模块的项目:使用最新版本。在你的情况下,jdk8。如果出现问题,请安装并使用多个 jdk。

编辑:如果你用jdk8编译一个java 7 prog,确实可能会出现问题,但是在我的200个本地构建和400个CI版本中,没有任何问题。问题率如此之低,以至于我只是将其考虑在内。如果您认为它非常重要,请始终安装并使用匹配的jdk。

颜鸿云
2023-03-14

使用 1.8 编译器编译 1.7 代码时可能会遇到问题。仅仅将 -sourcetarget 设置为 1.7 是不够的,您应该在编译期间收到一条警告,抱怨引导类路径。

如果你不小心使用了1.8中引入的类或方法 - 例如这个,编译器不会捕获它。在 1.7 运行时上运行代码将失败,然后使用 NoSuch 方法错误

因此,如果您打算在 1.7 运行时上运行代码,则应使用 1.7 编译器进行编译或设置引导类路径。

 类似资料:
  • 这本书讲述的是 Swift 5.1,它是 Xcode 11 中包含的默认版本。你可以使用 Xcode 11 来编译用 Swift 5.1、Swift 4.2 或 Swift 4 写的代码。 当你使用 Xcode 11 编译 Swift 4 和 Swift 4.2 代码时,大部分 Swift 5.1 的功能是可用的。也就是说,下面的变更仅对 Swift 5.1 或后续版本生效: 返回不透明类型的函数

  • 我正在构建我的第一个spark应用程序。 http://spark.apache.org/downloads.html告诉我火花2。x是根据Scala 2.11构建的。 在Scala网站上https://www.scala-lang.org/download/all.html我看到的版本是2.11.0-2.11.11 所以我的问题是:火花网站上的2.11到底是什么意思。它是2.11.0 - 2.1

  • 我有一个运行在java 1.6上的客户机,它通过web服务与运行在java 1.8上的服务器通信。 1)我想知道我的客户是否可以支持任何SSL/TLS版本? 2)如果我无法访问远程服务器,如何发现我的客户端运行在哪个SSL/TLS版本上? 3)我可以从java客户端应用程序强制使用TLS/SSL版本吗? 任何帮助都将是伟大的!谢谢你!

  • 在使用IntelliJ IDEA运行JUnit测试时,我得到 我该如何纠正这一点呢? 使用SDK 1.7 模块语言级别为1.7 Maven build工作良好。(这就是为什么我在IDEA configuration issue中相信这一点)

  • 我找不到任何关于什么Java版本可以用于Android Gradle“源兼容性”和“目标兼容性”的选择的信息。 我可以获得当前的Java JDK路径,比如:'c://Program Files/Java/jdk1.7.0_45'到'1.7',那么选择是'1.7'还是'1.6'? 或者,如果您有一个到'1.8'的路径:'1.8'、'1.7'和'1.6'? 我如何确定哪些选择是可用的? 谢了!

  • 我有一个使用JDK1.7编译的jar文件,我想在加载时检查一下我的jar运行的java运行时环境是否是1.7或更新的。有办法做到这一点吗? 我尝试使用System.getProperty(“java.version”),但这没有帮助,因为我的类版本是51,而JRE1.6拒绝加载它。