如何更好地处理在两个JAR中具有相同的类

时间:2015-03-23 14:10:42

标签: java jar

我写了两个罐子。他们每个人都负责发送不同的http / https请求。

他们中的每一个当然都使用某些相同的类。就像构建请求或发送请求的那些一样。该过程可能有点不同,但一般结构和类名称仍然相同。

每个请求构建不同的jar是我的经理的要求!所以我的所有http请求都使用1个jar是不可接受的。

现在,在我的客户端程序中,我需要为JarA发送一次请求,从JarB发送一次请求。但是编译失败了,因为我自然而然地在类和方法中使用非常相似的命名。

例如,我在两个jar中都有一个UserData类。因此,当我尝试在我的客户端程序中使用它时,编译器大喊:“对SystemData的引用是模棱两可的”。

我可以开始即兴创作每个jar的特定类名,但它很难看......

您如何建议解决此问题?

5 个答案:

答案 0 :(得分:2)

如果类是相同的,请将它们拉出到第三个JAR中,然后让客户端程序引用常见的JAR加上JarA或JarB。

如果类相似但不相同,则将它们放入不同的包中。如果它们位于不同的包中,您可以使用相同名称的类。

答案 1 :(得分:1)

将公共类放在第三个jar中,并将其捆绑在两个http jar中,或者在运行时将其添加到类路径中(这是最佳选择取决于您的部署方式等)。

答案 2 :(得分:1)

首先,您必须决定使用哪种架构。 如果管理人员要求你为了模块化而拥有不同的jar - 确保制作包含所有常用类的通用jar是值得的。

我想您应该使用Maven,Gradle或其他构建系统构建项目,这将有助于您管理依赖项。

另一个问题可能是你应该做'微服务'架构。然后代码重复是不可避免的。

要在复制时克服相同的类名 - 我建议为每个模块添加不同的包名称。

答案 3 :(得分:0)

使用像 maven 这样的构建系统,其中一个可以具有库依赖性,到一个常见的第三个jar。它维护着一个版本化jar的存储库。

答案 4 :(得分:0)

如果您在两个不同的jar中看到同一个包具有相同的包,并且项目中需要两个jar,那么一个解决方案就是 -

  

解决方案

  • you can download the source code of that duplicate class and creat keep the same in your project with package structure. So this way JVM loads your project classes first and give first preference to invoke your project class rather then other jar's class