当前位置: 首页 > 知识库问答 >
问题:

内部依赖类限定名称冲突

狄兴邦
2023-03-14

我的Gradle项目中有两个依赖项库:

  • OLD:完全使用lib
  • 新:只有db库(固定库)

它们都拥有相同的数据库连接类,包括包,例如:net。我的公司。常见的dbsq。DBConnector()。

我需要的是确保使用新的db连接类,但由于所需的UTIL的其余部分在新的数据库中不可用,所以保留旧的(可以没有db类)作为依赖项。

是否有可能仅排除/包括依赖项的特定类或包?或者确保相同命名类的“重写”?不幸的是,这不是可传递依赖关系的问题,但名称冲突的db连接类在两者中都存在。我也不能对依赖项的内容产生任何影响。

通过将两者都指定为编译依赖项,IDE(idea)使用了来自新的类,但是在weblogic服务器中运行. war使用了来自OLD的db连接类。

有什么想法吗?我可以给出更具体的描述,但这是一个相当笼统的问题。

共有1个答案

杜嘉慕
2023-03-14

如果包含两个库,则包含它们为满。

我只能想到两种方法

  1. 删除旧的依赖项并检查哪些是包含您所依赖的类的新库。通常,当一个项目将基于一个完整jar的打包替换为基于更精细研磨的打包时,只需添加所有精细研磨的库,就可以拥有完整的类集。如果你告诉我们哪一个是你的图书馆,用更具体的材料回答会更容易
  2. 利用旧的库,只使用您需要的类重新打包它。气馁和容易导致问题

最好的选择是1。

 类似资料:
  • 问题内容: 考虑以下病理示例: 在构造函数中创建的两个实例属于嵌套类。 但是,我怎么能指称我们在同一个班级中都知道和喜欢的东西呢?我们不能导入它,也不能使用完全限定的名称,因为将使用嵌套的类符号。 在这种情况下我们该怎么办?(除了显而易见的以外-停止对嵌套类使用此类肆意的邪恶名称)。 问题答案: 如果您完成了以下两项操作,则不能再直接引用: 在作用域中使用静态嵌套类隐藏简单名称。 使用嵌套在cla

  • 由一些模块组成的maven项目。我的一个模块正在使用google版本的guava依赖项。现在,我正在我的项目中集成另一个模块,该模块也使用guava但版本。 因此,我希望新模块使用guava版本,而其余项目使用guava版本。我尝试将guava的添加到新模块中,但没有成功。 更新:@Guillaume Darmont的答案为不同的模块解决了问题。但现在我的问题是,新模块有两个依赖项,其中一个使用g

  • 错误为:java.security.NoSuchProviderException:JCE无法验证提供程序BC。注意,我已经添加了这段代码:security.addProvider(new BouncyCastleProvider()); 这在使用spring boot embedded tomcat时可以很好地工作,但在导出到运行在wildfly服务器上的war文件时就不行了。 下面是我如何宣布

  • 我有两个顶级班;每个都有一个同名的内部类: 我的期望是最终得到四个类文件,包括一个$TestCase。类和B$TestCase。类,这是我从命令行编译时得到的。然而,Eclipse只是创建了测试用例。类,并声明当我尝试编译B.java时“类型TestCase已经定义”。 是否有一个Eclipse选项,我可以设置为生成(我认为是标准的)A$TestCase.class和B$TestCase.clas

  • 因为Flatter\u math\u fork 获取:^4.6.1获取存储:2.0.3 dio:^4.0.4 dio\u http\u缓存:0.3.0 webview_flutter:^2.8.0flutter_html:^2.0.0url_launcher:^6.0.17 firebase\u消息:^11.2.4 cloud\u firestore:^3.1.5 firebase\u认证:^3.

  • 我试图向spark提交一个jar,但我的jar包含与spark内置jar(snakeyml和其他)冲突的依赖项。 我使用以下命令提交: 但我还是有同样的例外