如何在源目录和源测试目录中定义Java 9模块?

时间:2019-05-03 15:35:08

标签: java java-9 java-11 java-module

我在使用一些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;
}

然后编译错误消失了。我现在到处都有可见性错误,比以前有很多很多。

我已经开始根据需要使用exportsimports条目修复可见性错误,但是现在我遇到了问题。

在其中一个项目中,有一个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'。

如何正确定义依赖项和模块?

0 个答案:

没有答案