我在使用一些Java模块时非常困难。我正在处理一个旧的Java项目,该项目已“迁移”到Java11。在该项目的任何地方都没有定义任何module-info.java
文件。
我在Eclipse / VS Code中遇到编译错误,看起来像:
The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml
我不完全理解为什么会导致此问题,但是我在模块的根目录中添加了module-info.java
定义。
module com.company.app {
requires java.xml;
}
然后编译错误消失了。我现在到处都有可见性错误,比以前有很多很多。
我已经开始根据需要使用exports
和imports
条目修复可见性错误,但是现在我遇到了问题。
在其中一个项目中,有一个source
和一个单独的source-test
文件夹。我已经在source
文件夹中定义了模块定义。
source-test
文件夹中的代码是单独的,但是具有相同的包结构。以下代码:
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.experimental.categories.Category;
The import org cannot be resolved.
(在import static
的行中)。
The type org.junit.Test is not accessible
(在相应的行中)
The type org.junit.experimental.categories.Category is not accessible
(再次在相应的行中)。
我不想将junit依赖项添加到主项目代码中,因为它是测试依赖项。但是,如果我在source-test
文件夹中定义了另一个module-info.java模块,它将抱怨构建路径包含重复的条目'module-info.java'。
如何正确定义依赖项和模块?