Java 罐子的依赖关系
我用Java6创建了一个Jar。现在我正在创建一个发布文档并记录依赖项。如何找到能够成功运行Jar的最早版本的Java,以及能够成功将源代码编译成Jar的最早版本的Java?我只知道一个manuel解决方案:尝试一下。然而,有两件事要考虑。< /P>Java 罐子的依赖关系,java,jar,dependencies,Java,Jar,Dependencies,我用Java6创建了一个Jar。现在我正在创建一个发布文档并记录依赖项。如何找到能够成功运行Jar的最早版本的Java,以及能够成功将源代码编译成Jar的最早版本的Java?我只知道一个manuel解决方案:尝试一下。然而,有两件事要考虑。< /P> 代码语言与哪个版本兼容 它将为哪个JRE执行 首先可以使用当前的JDK,只需迭代传递给javac编译器的-source和-target参数。但是,这不会阻止您使用来自您正在使用的JDK的类和方法。如果您使用的类或方法当时不存在,那么代码将不会针对较
javac
编译器的-source
和-target
参数。但是,这不会阻止您使用来自您正在使用的JDK的类和方法。如果您使用的类或方法当时不存在,那么代码将不会针对较低的JRE执行
最节省的方法是安装所有不同的JDK,并尝试用它们的每个编译器编译代码。如果使用java 6创建jar,并且没有指定不同版本的输出字节码,则生成的类文件将需要java 6或更高版本。如果您正在手动编译,如果您正在使用eclipse或其他IDE,那么您可以通过
-target
命令行选项来测试源代码可以生成哪些字节码版本。大多数设置都在项目选项或类似的地方控制生成的字节码版本
一篇关于确定类文件字节码版本的相关文章:不幸的是,恕我直言,我认为这不会阻止您使用不属于给定JDK发行版的API特性。例如,假设您使用JDK 1.7编译器进行编译,您可以使用
-source 1.5
-target 1.5
,编译器仍然不会抱怨您使用的是JDK 1中添加的String.isEmpty()
方法。6@EdwinDalorzo确切地我只是想补充一下。在这种情况下,我不确定这种方法是否有很大帮助,因为问题在于检查依赖关系,而源和目标命令行选项仅用于检查语言功能兼容性。@EdwinDalorzo我同意,我认为只有安装所有不同的JDK作为一种可能的解决方案,除非有一个工具可以做到这一点。