我可以在Java 7中编译的项目中使用Java 7中编译的jar作为依赖项吗?

de_xtr:

在为与Java 6兼容而编译的项目中,我可以使用Java 7中编译的jar作为依赖项吗?我没有依赖项的源代码。我将编译的jar作为maven依赖项。

斯蒂芬·C:

在为与Java 6兼容而编译的项目中,我可以使用Java 7中编译的jar作为依赖项吗?

让我们取消选择:

  • 您有一个已编译的项目,因此可以在Java 6 JRE上运行。(假设您仅在该项目中使用Java 6 API。)此项目的.class文件必须具有classfile格式的主版本50,否则Java 6 JRE将无法加载它们。

  • 然后,您具有一个“用Java 7编译”的依赖项。这可能意味着两件事之一:

    1. 可以使用Java 7工具链进行编译,但使用Java 6的目标版本。

    2. 可以使用Java 7的Java 7工具链来编译它。

在上述两个子情况下,如果在Java 7 JRE 1上运行项目,则应该能够在Java 6项目中使用依赖项Java 7 JRE可以加载和运行针对Java 6编译的类文件。在其中一种情况下,您将加载具有两个(或更多)类版本号的类。但这没关系。

另一方面,如果尝试在Java 6 JRE上运行代码,则:

  • 子情况1将工作提供了Java 7的依赖性不使用任何Java 7(或更高版本)的API; 即,它仅使用Java 6或更早版本中存在的Java标准类,方法等。

  • 子情况2将不起作用。Java 6 JRE将无法加载依赖项。确实,如果依赖项是静态的(即项目源代码具有依赖项的API的编译时依赖项),则该项目代码将无法构建...因为Java 6编译器应拒绝读取依赖项的较新版本的类文件。


最可取的方法是将您的项目和执行平台迁移到Java7。或者最好将迁移到Java 9,因为Java 7已经过EOL。

如果您不能做到这一点,那么下一个最好的办法就是避免使用Java 7依赖项,直到可以升级为止。

如果您的客户坚持要求您继续支持Java 6,那么他们会阻碍您升级产品线的能力。他们应该为此付费。

如果您是出于内部原因而避免升级Java平台,则此决定正在积累技术部门...您的组织将被迫长期回报。


1-....或JDK。就运行代码而言,JDK等效于JRE。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以在Maven中同时使用Java和Scala混合代码编译具有依赖关系的Scala项目吗?

我可以在scala Play 2.3.8项目中使用新的Java 8 time API吗?

我可以在我的 java Spring + Thymeleaf 项目中使用 Tabulator js 库吗?

我可以在sbt构建的混合Scala 2.10 / Java项目中使用Java 8吗?

在我编译的 jar 中包含一些依赖项

我可以在纯Java项目中使用由Kotlin协程构建的库吗?

我可以在Java EE项目中使用Dagger 2吗?

我可以在BlackBerry 10中使用Xcode编译的armv7 / armv7s .so库吗?

Kotlin + Java 项目中 Eclipse 中的编译错误,但项目使用 Maven 构建

如何将焊缝嵌入码头9中以在我的java maven项目中使用cdi?

Maven:我可以在 jar 中只打包依赖项(没有应用程序)吗?

我是否可以交叉编译可以选择使用Java 8中的类但已编译为Java 6的Java代码?

我可以动态加载HTML字符串作为组件模板并在Angular 7中完全编译吗?

在gradle中,我可以编译本地模块并将其用作其他“外部”库的依赖项吗?

分析Java项目中的JAR依赖项

在图书馆项目中使用Java 7源代码级别

我可以在项目中编译模块并以交互方式将已编译的模块加载到ghci中吗?

我们可以将控制器和模型类构建到单独的 jar 文件中并将该 jar 文件作为依赖项添加到另一个项目吗

如何在java中的另一个项目中使用一个项目中的类?

Windows中编译的Java在Linux中可以使用吗?

我可以在Django项目中使用React Router吗?

我可以在C ++项目中使用Watson TTS吗?

我可以在flutter项目中使用python代码吗?

如何编译具有jar依赖项的Java文件?

我通常希望在我的 java 项目中使用 com 文件夹吗?

在Java项目中使用android.jar-RuntimeException Stub?

我可以在Java中更改参数吗?

如何在Android项目中使用java反射获取超类中的子类列表

我们可以在Java 7中同时使用资源尝试和多重捕获吗?