如何在 Eclipse 中使用模块化项目的 .classpath?
How to use the .classpath of a modular project in Eclipse?
我创建了一个具有以下结构的测试项目:
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
是 class 依赖于 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"/>
会删除错误(可能是因为该项目不再被视为模块化)。
我在 Eclipse 中发现了 bug 526831,但从那里看来它并不是真正的错误(?)。我在项目设置或配置方面做错了什么吗?
在 module-info.java 中必须指定所需的模块 java.logging
(而不是 .classpath
中的 <attribute name="add-exports" value="java.logging/java.util.logging=ALL-UNNAMED"/>
) :
module com.baseTest {
requires java.logging;
}
Eclipse 为此提供了快速修复 (Ctrl+1):将 'requires java.logging' 添加到模块-info.java.
我创建了一个具有以下结构的测试项目:
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
是 class 依赖于 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"/>
会删除错误(可能是因为该项目不再被视为模块化)。
我在 Eclipse 中发现了 bug 526831,但从那里看来它并不是真正的错误(?)。我在项目设置或配置方面做错了什么吗?
在 module-info.java 中必须指定所需的模块 java.logging
(而不是 .classpath
中的 <attribute name="add-exports" value="java.logging/java.util.logging=ALL-UNNAMED"/>
) :
module com.baseTest {
requires java.logging;
}
Eclipse 为此提供了快速修复 (Ctrl+1):将 'requires java.logging' 添加到模块-info.java.