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

如何处理自动模块中的拆分包?

林俊英
2023-03-14

我目前正在测试将现有应用程序迁移到拼图模块。我的一个模块使用ElasticSearch及其Groovy插件。

  • org.elasticsearch:elasticsearch
  • org.elasticsearch.module: lang-groovy

不幸的是,他们共享一个拆分包,所以mvn安装给了我:

X从lang.groovy和elasticsearch读取包org.elasticsearch.script.groovy

对于描述符中的每个所需模块一次,其中x是每个模块的名称。

我假设一个新的elasticsearch版本会在Java9最终完成时消除拆分包,但是通常有没有一种方法来处理遗留依赖项中的拆分包?

我希望能够在类路径而不是模块路径上找到这些,但在阅读了邮件列表上的对话后,似乎没有办法告诉Maven编译器这样做。

maven 3.3.9-maven-compiler-plugin 3.6.0-jdk9-ea 149-elasticsearch 2.3.3

共有1个答案

夔庆
2023-03-14

经过更多的测试,我认为有几个选项可以解决许多(但绝对不是所有)第三方拆分包的情况。

  1. 清理依赖项-也许依赖项实际上并不需要,或者可以被更新(或更不同)的JAR替换
  2. 将您自己的模块重组为两个模块,每个模块从两个第三方模块之一读取包(如果可能/合理)
  3. 将第3方模块之一(或两者)包装在一个简单的模块中,该模块除了显式导出模块实际需要的包外什么也不做。

根据具体情况,这些选项中的一个可能非常适合解决拆分包问题。但是它们都不能处理一个连贯的代码实际上需要从拆分包的两个部分访问类的情况。

 类似资料:
  • 根据 FileInputFormats定义的逻辑记录通常不适合HDFS块。例如,TextInputFormat的逻辑记录是行,它们通常会跨越HDFS边界。这与程序的功能无关--例如,行不会丢失或中断--但值得了解,因为这确实意味着数据本地映射(即与输入数据运行在同一主机上的映射)将执行一些远程读取。这导致的轻微开销通常并不显著。 假设记录行被分成两个块(b1和b2)。处理第一个块(b1)的映射器将

  • 我已经练习了java 9模块与Maven项目的系统集成。它似乎运行良好,但我担心java 9之前编译的maven模块的向后兼容性。 为了向后兼容,JPMS(Java平台模块系统)具有自动模块的概念。在JPMS中,没有模块信息的Jar文件。java被视为自动模块,其他java模块可以使用这个jar文件,使用它的文件名作为模块名。 在与maven项目集成的情况下,我认为需要对JPMS向后兼容性的额外支

  • 我的应用程序支持所有方向,除了肖像向上向下。在我的视图层次结构中,我有一个AVCaptureVideoPreviewLayer作为俯视图中的一个子层,即UIImageView。然后,在视图层次结构的下方是几个显示控件的覆盖视图。 覆盖视图可以在方向改变的情况下正常工作,但我不知道如何使用这个AVCaptureVideoPreviewLayer。我希望它的行为像照相机应用程序一样,这样preview

  • 我在继承的项目上有以下目录结构: 从或我可以从模型运行此,并且可以正常工作。使用PyCharm时,我可以在。 然而,当我在我的dev服务器上部署它时,这在。我得到错误 PyCharm做了些什么来避开这个问题? 如何在在开发服务器上运行Flask应用程序时是否同时在PyCharm中工作?我通常只使用来自目录。

  • 问题内容: 因此,我尝试尝试计算以下字符串的数百万种不同组合,但我每秒仅计算大约1,750种组合,这甚至还远没有达到我所需的速度。那么,我将如何重塑这种形状,以便同一件事情的多个过程正在计算不同的零件,而不是在计算已经计算出的零件并保持快速的速度呢?下面的代码部分是我一直在使用的代码。任何例子将不胜感激! 问题答案: 将产品分解成一个部分的一种方法是分解产品的第一个组成部分,以便每个独立的作业都具

  • 我们有一个服务调用,它返回一个id列表,我们用它调用另一个服务,该服务一次只接受一个id,因此我们使用的是驼峰分割器,并行处理转换为。现在,我们通过seda调用该服务,因此可以设置超时。这将导致并行处理不再是并行的问题,因为seda默认只有1个并发使用者在处理它。 选项: < li >放一个?seda上的concurrent consumers = x < li >使用direct而不是seda。