【发布时间】:2018-11-11 03:37:12
【问题描述】:
我正在将一个 java 项目转换为使用模块。我的一个模块依赖于hamcrest 库,它需要hamcrest.core 和hamcrest.library 这两个jar 文件。这两个 jar 文件都有org.hamcrest 包。因此,当我的模块想要将这两个 jar 视为自动模块时,它会失败,因为模块路径中的两个模块不能有同名的包。我搜索了很多,在stackoverflow上找到了一些相关的东西。如果我不想重建这些依赖项,我似乎有两个合理的选择:
- 使用我的构建自动化工具(maven)将两个 jar 合并到一个 jar。
- 不知何故告诉 java 编译器这两个 jar 应该被视为一个单独的自动模块。
所以这是我的问题:
- 这两个选项是否可行?如果是,怎么做?
- 还有更好的选择吗?
提前致谢
【问题讨论】:
-
所有解决方案中最简洁的方法是报告并在库本身中修复它。一些在这种情况下有用的链接/报告 -github.com/hamcrest/JavaHamcrest/issues/187, github.com/hamcrest/JavaHamcrest/issues/205
-
没错,但我很着急 :)
-
您是否尝试让这些 jars 保留在 classpath 而不是 modulepath 上以生成未命名的模块?不确定that would be something you're looking for。
-
不幸的是,显式模块无法读取类路径。它说如果显式模块被视为未命名的模块“临时”,那会起作用,但我不知道这甚至意味着什么!
标签: java maven java-9 hamcrest java-module