gpt4 book ai didi

java - 编译不同Java版本的包类

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:41 25 4
gpt4 key购买 nike

我有一个分布式应用程序,其中一部分是遗留的,因此在 Java 7 下运行。

另一部分在 Java 8 下运行(当然是编译)。

因此,从 App 的第一部分调用第二个 VM 的服务以:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Unsupported major.minor version 52.0

我决定使用 Maven 编译器插件使用 Java 7 源/目标编译所需的服务。

所以,假设我们有一个包含两个类的包:

com/example/A.java
com/example/B.java

如何配置Maven compiler plugin,或者有其他方法吗?用 Java 7 编译 A.java,用 Java 8 编译其他 (B.java)。

最佳答案

你在这里走错了兔子洞。

不要根据边界来考虑您的产品/部署单元/交付。包确实可以帮助您组织 代码。没有别的。

考虑不同包的不同版本简直就是:把时间花在错误的问题上。

相反:了解您的交付,然后从那里决定应该在哪个版本中编译哪个产品。

除此之外:使用服务可以远不止于仅仅调用其他类。如果您确实有不同的组件,它们彼此独立运行,但必须相互使用:那么定义那些服务,并使用定义的协议(protocol)将它们互连。

例如:JVM A 提供了一个 REST API,JVM B 使用它来调用由 JVM A 提供/托管的服务。这样您就不必再被迫考虑 Java 版本 - 而是专注于明确定义您的接口(interface)和使用它们的方法。或者使用某种消息总线。有很多选项可供选择。如前所述:用你的时间和精力来考虑这个问题,而不是在包边界上控制 Java 版本。

我的建议听起来有些矫枉过正:但仅凭运行不同版本的 JVM 这一事实就表明您已经在考虑更复杂的“真实世界”场景。在复杂的现实世界场景中,您最好转向现实世界的解决方案(如服务定义),而不是绕过它们。

关于java - 编译不同Java版本的包类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47508131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com