Я создал тестовый проект со следующей структурой:
baseTest
|- src/main/java
| |- com.base
| | |- MainDependency.java
| |- module-info.java
|- src/test/java
|- test.com.base
|- SomeTest.java
module-info.java
— это просто объявление пустого модуля:
module com.baseTest {
}
То же самое для MainDependency.java
:
package com.base;
public class MainDependency {
}
SomeTest
— это класс, основанный на коде из main
и из JDK:
import java.util.logging.Logger;
import com.base.MainDependency;
public class SomeTest {
String s;
MainDependency md;
Logger j;
}
.classpath
это
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
<attribute name="add-exports" value="java.logging/java.util.logging=ALL-UNNAMED"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
Используя приведенную выше конфигурацию, я получаю ошибку The import java.util.logging cannot be resolved
. Удаление <classpathentry kind="src" path="src/main/java"/>
устраняет ошибку (вероятно, потому что проект больше не считается модульным).
Я нашел ошибку 526831 в Eclipse, но похоже оттуда что на самом деле это не ошибка (?). Я делаю что-то неправильно в отношении настройки или конфигурации проекта?
.classpath
). - person howlger   schedule 28.01.2018.classpath
говорит JUnit 5 (org.eclipse.jdt.junit.JUNIT_CONTAINER/5
), но ваш код Java говорит JUnit 4 (import org.junit.Test;
вместоimport org.junit.jupiter.api.Test;
). - person howlger   schedule 28.01.2018Automatic-Module-Name
вместоmodule-info.java
(что, ИМХО, не добавляет никакой ценности). - person howlger   schedule 28.01.2018module-info.java
находится в папкеsource/
, которая не является исходной папкой. Ваш файл.classpath
показывает, что есть папкаsrc/
, которая также не является исходной папкой (kind="src"
). - person howlger   schedule 30.01.2018/src
. Должно быть правильно сейчас. - person user1803551   schedule 30.01.2018module-info.java
должен быть либо вsrc/main/java
, либо вsrc/test/java
(но не вsrc
/source
) - person howlger   schedule 30.01.2018src/main/java
. - person user1803551   schedule 30.01.2018SomeMock
(третий абзац) — этоSomeTest
(структура), верно? Что именно вы подразумеваете под пустым объявлением модуля? - person howlger   schedule 30.01.2018