Java 罐子的依赖关系

Java 罐子的依赖关系,java,jar,dependencies,Java,Jar,Dependencies,我用Java6创建了一个Jar。现在我正在创建一个发布文档并记录依赖项。如何找到能够成功运行Jar的最早版本的Java,以及能够成功将源代码编译成Jar的最早版本的Java?我只知道一个manuel解决方案:尝试一下。然而,有两件事要考虑。< /P> 代码语言与哪个版本兼容 它将为哪个JRE执行 首先可以使用当前的JDK,只需迭代传递给javac编译器的-source和-target参数。但是,这不会阻止您使用来自您正在使用的JDK的类和方法。如果您使用的类或方法当时不存在,那么代码将不会针对较

我用Java6创建了一个Jar。现在我正在创建一个发布文档并记录依赖项。如何找到能够成功运行Jar的最早版本的Java,以及能够成功将源代码编译成Jar的最早版本的Java?

我只知道一个manuel解决方案:尝试一下。然而,有两件事要考虑。< /P>
  • 代码语言与哪个版本兼容
  • 它将为哪个JRE执行
  • 首先可以使用当前的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作为一种可能的解决方案,除非有一个工具可以做到这一点。