Java 我们需要为JDK升级编译JAR吗?

Java 我们需要为JDK升级编译JAR吗?,java,Java,对于我们的java项目,我们使用了几个JAR库。JAR库的一些源代码已经丢失 我们将很快升级JRE版本,您知道我们是否需要为新的JRE版本重新编译JAR库吗?由于我们没有源代码,是否有一个100%准确的反编译器?否,所有JDK版本都与旧JAR向后兼容 您不需要重新编译 唯一的例外是JAR实现(不是使用,而是实现)JDBC驱动程序。Java是向后兼容的,因此您可以使用使用运行最新jre版本的旧jdk编译的JAR。但是,如果您使用的是一些jdk特定的类,这些类在最新版本中已经更改,那么只有您可能会遇

对于我们的java项目,我们使用了几个JAR库。JAR库的一些源代码已经丢失


我们将很快升级JRE版本,您知道我们是否需要为新的JRE版本重新编译JAR库吗?由于我们没有源代码,是否有一个100%准确的反编译器?

否,所有JDK版本都与旧JAR向后兼容

您不需要重新编译


唯一的例外是JAR实现(不是使用,而是实现)JDBC驱动程序。

Java是向后兼容的,因此您可以使用使用运行最新jre版本的旧jdk编译的JAR。但是,如果您使用的是一些jdk特定的类,这些类在最新版本中已经更改,那么只有您可能会遇到问题。我认为这种可能性非常小。

您不需要在Java8JVM上重新编译Java1.0JAR


您可能会遇到代码中的一个bug,它不会出现在您的版本中,但会出现在从不出现的版本中。e、 你依赖于一些未定义的行为或一个后来被修复的bug。在这种情况下,您必须修复代码,重新编译代码是不够的。

有些内部类,如Sun的Base64编码/解码,将在较新版本中慢慢消失。您可以运行OpenJDK来检查sun软件包是否存在问题。

Hum,java始终保持向后兼容性,因此您不需要重新编译。+1如果您只使用所实现的方法子集,则更新的JDBC接口具有更多方法可能无关紧要。e、 如果在接口中添加未使用的方法,而不重新编译实现,那么所有方法都可以工作。那么,当新的JRE版本中有一些将在即将发布的JRE版本中删除的内容时,会发生什么情况呢。您确定不必为新版本重新编译JRE吗?没有任何标记为不推荐的内容被删除。在任何可能遇到的情况下,你都不需要重新编译。这只是纸上谈兵。我记得至少有两次代码停止工作(JFrame的ContentPane表单1.3到1.4发生了一些变化,最近System.execute()的行为发生了相当大的变化,可能破坏了很多工具)。@Durandal“向后兼容”并不意味着“无法修复以前实现中的错误”