Intellij无法识别Java 8 Maven项目自动模块名称

时间:2020-01-29 23:49:32

标签: java maven intellij-idea java-11 java-module

我试图将多个java 8 maven依赖项添加到intellij中的java 11 maven项目中。我已经将自动模块名称添加到java 8 pom中,如下所示,其中com.robert.package8是软件包名称。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <archive>
            <manifestEntries>
                <Automatic-Module-Name>com.robert.package8</Automatic-Module-Name>
            </manifestEntries>
            <manifest>
                <addClasspath>true</addClasspath>
            </manifest>
        </archive>
    </configuration>
</plugin>

在java 11项目中,我已将软件包作为依赖项添加到pom中,并在intellij中将其添加为maven项目,将package8项目的sdk设置为java 8。

<dependency>
    <groupId>com.robert</groupId>
    <artifactId>package8</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

但是在Java 11项目中导入包时,出现错误

在未命名的模块中声明了包装com.robert.package8,但模块com.robert.package11无法读取

并在我的module-info.java中要求它给出了Module not found错误

我是否缺少某些东西或做错了什么? package8项目是通过pom添加的,并且该目录包含项目文件,而不仅仅是jar。

1 个答案:

答案 0 :(得分:1)

addClassPath删除或设置为false可以为您提供帮助。

<archive>
    <manifestEntries>
        <Automatic-Module-Name>com.robert.package8</Automatic-Module-Name>
    </manifestEntries>
</archive>

以上内容足以在模块路径中使用该模块,使用Automatic-Module-Name将有助于将您的Jar识别为具有指定名称的Java模块。