我们有一个使用gwt 2.6的旧项目,因此我们需要使用-source 1.7选项进行编译。
使用的JRE和JDK是1.8,但可以使用1.7源代码选项进行编译。
我们想使用ConcurrentHashMap中的新compute function,该新{{3}}仅在Java 8中可用。当使用eclipse和maven时,所有内容都编译良好。另一方面,IntelliJ在抱怨。我的问题是,它会起作用还是我们会遇到问题?
该项目将运行吗?
在Google中搜索ConcurrentHashmap计算,Java 8和源代码级别1.7没有提供任何信息。
答案 0 :(得分:6)
如果有的话,这将需要大量仔细的“手动”工作。
例如,当您查看此question时,您会发现有各种不同的想法,人们希望如何使用Java 7启用“基于流的”功能编程。也许经过大量研究后,您会发现可能能够找到有关此类“增强收藏”功能的类似内容。
但是,所有这些可能都非常脆弱。一些示例可能运行良好的事实并不意味着您将能够在Java 7 VM上运行大型生产代码。
因此,这里有更多无法回答的问题:请谨慎使用时间和精力。与其尝试将库反向移植到Java 7,不如将其整个项目至少移植到Java8上。特别要记住,Java的发布节奏已经发生了很大的变化,与几年前相比,过时的Java版本与几年前相比简直是不受欢迎的。
答案 1 :(得分:0)
好吧,简单的答案是它将不起作用。目标运行时将不具有更新的API(即compute***
方法将不在Java 7的Map
版本上)。
因此,如果您部署该代码,则运行时将理解类的版本,但会引发NoSuchMethodError
和类似的错误。
除此之外,还有很多原因可以升级运行时。