【发布时间】:2019-03-17 12:50:14
【问题描述】:
我终于尝试使用 JDK 11 设置模块化 Java 项目,但我似乎没有正确使用模块和类路径。到目前为止,除了创建项目并将Apache Commons IO 2.6 添加到其类路径之外,我什么也没做。 模块文件还是空的。
然后我创建了一个测试类并使用了其中一个 Apache 类,这让我感到困惑。 Eclipse 的自动完成功能很好地为我提供了 Apache 类,甚至添加了应有的导入,但是 无法解析相同的导入。
查看下面的屏幕截图,了解我的意思。
任何帮助表示赞赏:)
【问题讨论】:
-
您必须在您的
module-info.java文件中为依赖声明一个requires指令。 -
如果您有
module-info.java文件,请将其删除(或将 JAR 从 Classpath 移动到 Modulepath 并将 JAR 添加为模块在module-info.java通过requires ...)。 -
我真的很想使用
module-info.java文件,但是 Apache Commons 库显然还没有被设计成一个 java 模块。所以,每当我将它添加到模块信息时,它都会显示“org.apache. ... cannot be resolved to a module.” -
另外,我究竟该如何添加它?我试图将它的包作为模块来处理,但这当然行不通。
module MM_Utils { requires org.apache.commons.io.output; } -
看起来库使用
org.apache.commons.io作为“自动模块名称”。当依赖项不是正确的模块而是用作模块(即“自动模块”)时,这是模块系统将使用的名称。鉴于此,它应该是requires org.apache.commons.io;。我不记得了,但您可能需要将库放在模块路径而不是类路径上。
标签: eclipse jar java-11 java-platform-module-system