Java Maven在不同的依赖项中使用相同的类名

Java Maven在不同的依赖项中使用相同的类名,java,maven,dependency-management,Java,Maven,Dependency Management,我有一个maven项目,它有两个依赖项:DependencyA和DependencyB。在每个依赖项中都有一个类,我们将其称为FooClass 现在有一个问题,因为我项目的一个类需要DependencyA的FooClass,另一个类需要FooClass的DependencyB。但是这两个类都加载DependencyA的FooClass 我能用maven解决这个问题吗?还是我必须考虑我的项目结构的设计 您应该避免在同一个包中获得两个同名的类。这将导致一个想法,即您有两个不同版本的一个代码模块 例如

我有一个maven项目,它有两个依赖项:
DependencyA
DependencyB
。在每个依赖项中都有一个类,我们将其称为
FooClass

现在有一个问题,因为我项目的一个类需要
DependencyA的
FooClass
,另一个类需要
FooClass
DependencyB
。但是这两个类都加载
DependencyA
FooClass


我能用maven解决这个问题吗?还是我必须考虑我的项目结构的设计

您应该避免在同一个包中获得两个同名的类。这将导致一个想法,即您有两个不同版本的一个代码模块

例如,如果您有com.yourcompany.yourproyectA.FooClass和com.yourcompany.yourproyectB.FooClass,这将不是一个问题

这种情况经常发生,我从来没有和maven发生过冲突


关于

您应该避免在同一个包中获得两个同名的类。这将导致一个想法,即您有两个不同版本的一个代码模块

例如,如果您有com.yourcompany.yourproyectA.FooClass和com.yourcompany.yourproyectB.FooClass,这将不是一个问题

这种情况经常发生,我从来没有和maven发生过冲突


关于

如果两个库需要相同库的两个不同版本,我建议使用OSGi之类的模块系统。

如果两个库需要相同库的两个不同版本,我建议使用OSGi之类的模块系统。

FooClass不在同一个包中。它甚至不在同一个maven依赖项中。如果它们不在同一个包中,那么应该没有问题。请确保您的导入语句是正确的。需要明确的是,如果您有两个类com.yourproject.FooClass在不同的maven依赖项中,它们实际上是同一个类,这就是您可能遇到问题的原因,这就是为什么我要问,如果包名相同,它们是相同的包,即使它们在不同的依赖项中;并导入com.yourprojectB.FooClass;然后它会带来麻烦,但这不是maven的问题,而是Java的问题。编译器不知道引用的是哪一个,在这种情况下,可以导入最常用的一个,并使用全名引用另一个,例如“com.yourprojectB.FooClass myObject=new com.yourprojectB.FooClass();”。我不确定这是否是你的问题。我想这就是重点。包名称相同。我不知道maven无法区分这一点。FooClass不在同一个包中。它甚至不在同一个maven依赖项中。如果它们不在同一个包中,那么应该没有问题。请确保您的导入语句是正确的。需要明确的是,如果您有两个类com.yourproject.FooClass在不同的maven依赖项中,它们实际上是同一个类,这就是您可能遇到问题的原因,这就是为什么我要问,如果包名相同,它们是相同的包,即使它们在不同的依赖项中;并导入com.yourprojectB.FooClass;然后它会带来麻烦,但这不是maven的问题,而是Java的问题。编译器不知道引用的是哪一个,在这种情况下,可以导入最常用的一个,并使用全名引用另一个,例如“com.yourprojectB.FooClass myObject=new com.yourprojectB.FooClass();”。我不确定这是否是你的问题。我想这就是重点。包名称相同。我不知道maven无法分辨。