当前位置: 首页 > 知识库问答 >
问题:

为什么IntelliJ识别模块依赖项,但仍然抛出“包不存在”编译错误?

施茂
2023-03-14

我刚刚安装了IntelliJ Community2020.2.1(Maven3.6.3)。我有一个名为“Genetest1”的相对简单的项目,它有一个聚合器/父pom和两个子模块,core和Playground:

genetest1
    pom.xml (aggregator/parent)
    core
        pom.xml
        src\main\java\com\gene\genetest1\core
            \util
                JsonIO.java
    playground
        pom.xml
        src\test\java\com\gene\genetest1\playground
            \json
                JacksonBaseTest.java
    resources
        \suiteFiles
            all.xml
            default.xml
        

相关的pom部分如下:

genetest1:

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.gene</groupId>
    <artifactId>genetest1</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    
    <modules>
        <module>core</module>
        <module>playground</module>
    </modules>
    
    ...

core:

    <modelVersion>4.0.0</modelVersion>
    <artifactId>genetest1-core</artifactId>
    <packaging>jar</packaging>
    
    <parent>
        <groupId>com.gene</groupId>
        <artifactId>genetest1</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    
    ...

playground:

    <modelVersion>4.0.0</modelVersion>
    <artifactId>genetest1-playground</artifactId>
    <packaging>jar</packaging>
    
    <parent>
        <groupId>com.gene</groupId>
        <artifactId>genetest1</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    
    ...

这个想法是在playground模块中进行TestNG测试,并在执行过程中调用核心模块中的实用程序方法。在上面的结构中,playground JacksonBaseTest.java类包含一个TestNG测试(@test),导入核心jsonio.java类,测试调用jsonio.java类中的一个方法。

  • 打开文件>项目结构...>项目设置>模块
  • 突出显示模块genetest1-playground
  • 选择右侧的依赖项
  • 单击右侧的+并选择模块依赖项...
  • 选择genetest1-core并单击OK
  • 单击应用并确定

如果没有上述依赖项设置,playground JacksonBaseTest.java中的import语句:

import com.gene.genetest1.core.util.JsonIO;

被称为错误“无法解析符号JSONIO”。当我设置依赖项时,错误就消失了。此外,在设置依赖项并执行Analyse>Module Dependencies...之后,它显示Intellij知道这个依赖项:

package com.gene.genetest1.core.util does not exist

共有1个答案

许照
2023-03-14

然后,我手动设置游乐场模块对核心的依赖关系:

对于基于Maven(Gradle/SBT)的IDE项目,您永远不会手动设置IDE中的依赖项。您应该在Maven(gradle/sbt)中配置所有依赖项和项目结构。您需要在playground模块pom.xml中添加对核心模块的依赖项。参考有关构建多模块项目的Maven文档。

 类似资料:
  • 而不是常规的选项。 该模块有一个文件和自己的文件

  • null 附注:Maven-Build是成功的。因此,Maven正在识别存储库中的包。

  • 问题内容: 我的Android Studio项目中有一个Java模块,它是Android模块的依赖项。我在构建时遇到问题,出现以下异常。 经过一番阅读,我可以发现这与Android Studio使用的Java编译器有关。但是我看不到改变它使用哪个编译器的方法。 我要包含在Android模块中的Java模块是我通过使用Android Studio通过依次转到文件>新模块> Java模块创建的,因此我

  • 我有一个Java web应用程序myproject。war部署到JBoss。应用程序的一部分使用JNI连接到C DLL,后者从一组第三方库调用函数。我们正在将此应用程序从x32服务器迁移到x64服务器。 先前环境构建 32位Windows Server 2003 JBoss 6. X Java1.6. X 新环境构建 64位Windows Server 2008 R2,SP1(6.1.7601)

  • 我有一个jar,build-plugins.jar和一个gradle插件,它是用build.gradle中的这个插件构建的: 这将构建build-plugins.jar。并且使用插件的项目按文件引用插件jar 问题是当我运行第二个项目的任何任务时,我得到的是“class proxy created for class XYZ”,根本原因是四个依赖项(joda-time、commons-io、str

  • 当您想将库添加到您的项目时,IntelliJ IDEA中的“模块依赖项”和“库”有什么区别?此外,当您将库添加到IntelliJ IDEA中的“模块依赖项”时,“导出”复选框是什么? 在每种方式中,类和代码是如何包含在所包含的