为了简单起见,我的目标是导入包
javax.enterprise.context
在java文件中。当我在没有模块的情况下执行此操作时(没有
module-info.java
)一切都很顺利。
现在当我添加一个
module-info.java
在不需要其他模块的情况下,我收到以下错误消息:
package javax.enterprise.context is not visible (package javax.enterprise.context is declared in the unnamed module, but module javax.enterprise.context does not read it)
requires cdi.api;
对我
module-info.java
,仅获取以下错误:
module not found: cdi.api
我的理解是,CDI库应该采用受jar文件名启发的自动模块名。当我和maven一起跑步时
-X
我明白了
cdi-api-2.0.jar
在我的课堂上。我相信,如果我错了,这应该转化为
cdi.api
自动模块名。但这仍然不起作用。
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.acme</groupId>
<artifactId>test.java.cdi</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
src/main/java/module-info.java:
module com.acme.test.cid {
requires cdi.api;
}
src/main/java/com/acme/main.java
package com.acme;
import javax.enterprise.context.*;
class Main {}
任何见解都将受到高度赞赏。