我们有一个使用GWT2.6的旧项目,因此我们需要使用-source 1.7选项进行编译。
使用的JRE和JDK是1.8,但使用1.7源代码选项编译。
我们希望使用ConcurrentHashMap中的新计算函数,该函数仅在Java8中可用。使用eclipse和maven时,一切都编译得很好。另一方面,IntelliJ在抱怨。我的问题是,它会起作用还是我们会有问题?
这个项目会运行吗?
在谷歌上搜索ConcurrentHashmap compute、java 8和源代码级别1.7没有给出任何信息。
好吧,简单的答案是它不会起作用。目标运行时不会有更新的API(即,compute***
方法不会出现在Java 7的Map
版本上)。
因此,如果您部署该代码,运行时将理解类版本,但会引发NoSuchMethodError
和类似的错误。
除此之外,升级运行时还有很多原因。
如果有的话,这将需要大量仔细的“手工”工作。
例如,当你看这个问题时,你会发现人们对如何使用Java 7实现“基于流的”函数式编程有各种不同的想法。也许,在做了大量研究之后,你可能会发现类似的东西,关于这种“增强的收藏”功能。
但是然后,所有这些可能都相当脆弱一些示例可能工作正常的事实并不意味着您将能够在Java7 VM上运行大型生产代码库。
因此,这里有一个更难回答的问题:小心如何投入你的时间和精力。与其尝试将库向后移植到Java7,不如考虑至少将整个项目转移到Java8上。尤其要记住的是,Java的发布节奏已经发生了显著的变化,与几年前相比,多年使用过时的Java版本就更不可取了。
当我试图使用Maven在EclipseJava项目上执行编译目标时,遇到了以下问题: [错误]无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:在项目上编译(默认编译)...:编译失败 [ERROR]在-source 1.5中不支持多捕获语句 [ERROR](使用-Source 7或更高版本启用多捕获语句) Eclipse项目中的JD
Java8引入了重要的新语言特性,如lambda表达式。 语言中的这些变化是否伴随着编译字节码中的重大变化,从而阻止它在不使用某些反向翻译器的情况下在Java7虚拟机上运行?
问题内容: 我试图在glibc源代码中找到select()源代码(Linux,i386架构),但我找不到任何东西(与所述体系结构有关) 谁能指出我的select()源代码? 问题答案: select()不是libc的函数,而是内核函数,因此您需要查看内核源代码。 您可以通过查看手册页来说明这一点:如果在第2节中,则为内核函数;如果在第3节中,则为标准C库的函数,在您的情况下为glibc。 编辑:像
问题内容: 就像我可以使用SourceForge的项目一样,是否可以在线浏览OpenJDK的源代码?我以前从未使用过水星,所以感到困惑。 (注意:我不想下载源代码。我只想在线浏览它,以了解如何实现某些方法。) 问题答案: 按照邓肯建议使用http://hg.openjdk.java.net/。 如果您不习惯使用Mercurial界面,则会感到非常困惑,并且由于这是一个大型项目,因此很难找到您想要的
我的pom文件列表 但是,在时,我得到 当我运行时,我看到实际上我使用的是Java6 它可以在哪里定义?我有源(d)my.zshrc多次。
问题内容: 在哪里可以找到javax.crypto源代码? --update 感谢OpenJdk版本,但是jdk6版本呢? 问题答案: 下载链接 http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/tip/src/share/classes/javax/crypto(OpenJDK版本) http://download.java.net/jdk6/sourc