gpt4 book ai didi

java - Lucene拆分包: module reads package 'org.apache.lucene.analysis.standard' from both 'lucene.analyzers.common' and 'lucene.core'

转载 作者:行者123 更新时间:2023-12-03 23:10:56 25 4
gpt4 key购买 nike

鉴于我的 module-info.java:

module my_module {
requires lucene.analyzers.common;
requires lucene.core;
}

我收到以下错误:

模块“my_module”从“lucene.analyzers.common”和“lucene.core”中读取包“org.apache.lucene.analysis.standard”

在我的代码中,我使用以下导入:

// import from lucene.analyzers.common
import org.apache.lucene.analysis.util.TokenizerFactory;
// import from lucene.core
import org.apache.lucene.analysis.TokenStream;

如何解决这个拆分包问题?

最佳答案

您可能已经知道,Lucene 并不能很好地支持 Java 平台模块系统,因此它没有定义模块并且包含拆分包,这些包不能很好地与模块系统配合使用。
但是,有一种解决方法允许在 JPMS 项目中使用 Lucene。实现它的确切方法取决于您的特定构建环境,我不知道您的设置是如何设置的,但是对于任何构建环境,基本思想都是相同的。 Lucene migration guide提供第一个线索(强调我的):

If you are migrating your project to Java 9 Jigsaw module system, keep in mind that Lucene currently does not yet support module-info.java declarations of service provider impls (provides statement). It is therefore recommended to keep all of Lucene in one Uber-Module and not try to split Lucene into several modules. As soon as Lucene will migrate to Java 9 as minimum requirement, we will work on improving that.


将所有 Lucene 保存在一个模块中(“Uber-Module”)意味着将所有 Lucene JAR 组合在一个 JAR 中,因此将自动模块分配给该 uber JAR 的默认 Java 行为正常工作,因为 uber JAR 包含合并的拆分包.作为一种快速而肮脏的解决方案,您可以在构建之前设置一个 shell 脚本来将 Lucene JAR 合并为一个,但是在构建过程中集成该步骤是一个更好的主意。
例如,要在 Maven 中执行此操作,您应该首先在 Maven 项目中创建一个 Maven 模块,因此该模块将您的 Maven 项目作为其父级。完成后,必须配置已创建模块的依赖项和 shade 插件,以便生成的 JAR 包含您使用的所有 Lucene 库。然后,您将该 Maven 模块声明为项目中的依赖项。有关更详细的说明和讨论,请参阅 https://www.reddit.com/r/javahelp/comments/8v914c/using_nonmodule_library_lucene_in_java_10_project/ , https://lists.apache.org/thread/ydrdwx63t80n7hsbz51467lp9z8w75tkShading a dependency in Maven .

关于java - Lucene拆分包: module reads package 'org.apache.lucene.analysis.standard' from both 'lucene.analyzers.common' and 'lucene.core' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57607637/

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