Intellij maven"无法解析符号"即使包装成功

时间:2017-08-09 02:16:09

标签: java xml maven intellij-idea word-cloud

我的问题:
我创建了一个Maven项目。我导入了一个存储库(称为Kumo)。在Maven配置XML文件中,我没有出现任何错误。当我尝试使用其中一个类时,会出现错误 它告诉我:<div class="class-item blue-bg"> <!--Heading stuff--> <div class="class-item-actions"> <span class="pick-up-icon"> <i class="fa fa-female fa-lg"></i> <i class="fa fa-child"></i> </span> <span class="full-day-icon blue">AM / PM</span> <span class="unapproved-projects-icon blue"> 2&nbsp;<i class="fa fa-th-large fa-lg fa-fw class-item-action"></i> </span> <i class="fa fa-unlock fa-lg></i> </div> </div>

我尝试过的(我认为)没有结果:

  • 使缓存无效
  • 重新启动IntelliJ
  • 重新导入所有Maven项目按钮
  • 生成来源按钮
  • 下载资源按钮
  • 添加编译XML标记
  • 尝试在Windows上创建此项目会产生相同的结果

pom.xml:

Cannot resolve symbol 'WordCloud'

Test_1.java:

<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
    <artifactId>kumo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>com.kennycason</groupId>
            <artifactId>kumo</artifactId>
            <version>1.11</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>

Test_2.java:

public class Test_1 {
    WordCloud cloud;
    FrequencyAnalyzer analyzer;
}

layout

pom.xml

what classes look like

3 个答案:

答案 0 :(得分:2)

根据kumo github repository的建议,您应该使用以下依赖项而不是<artifactId>kumo</artifactId>

<dependency>
    <groupId>com.kennycason</groupId>
    <artifactId>kumo-core</artifactId>
    <version>1.11</version>
</dependency>

让我们解释为什么<artifactId>kumo</artifactId>不起作用。这个pom正在使用<project><dependencyManagement>来宣布依赖信息。 Maven将从<project><dependencies>部分而不是<project><dependencyManagement>导入依赖项。

您可以在kumo(窗口)中检查本地Maven存储库中${user}\.m2\repository\com\kennycason\的pom。

Maven的依赖管理主要用于以下项目,

  1. 如果有一组继承了公共父项的项目,则可以将所有关于依赖项的信息放在公共POM中,并且可以更简单地引用子POM中的工件。
  2. 控制传递依赖项中使用的工件的版本。这意味着如果您在<dependencyManagement>部分中定义工件的版本,那么您可以在<dependencies>部分中没有版本的情况下声明它。
  3. 您还可以参考Introduction to the Dependency Mechanism了解更多进一步研究的例子。

答案 1 :(得分:0)

最疯狂的事情。显然版本1.11的Maven repository没有与之关联的JAR,因此无法直接添加。相反,4个子模块中的每一个都必须直接添加它们的依赖项,并且突然它起作用。我不确定为什么就是这种情况,因为总包将它们包含为依赖项。不过,在与我的动物谈论它之后,我已经解决了我自己的问题。

答案 2 :(得分:0)

您是否应该更新maven以下载依赖项并将WordCloud类导入到您的java文件中?此错误可能是由IDE无法找到类引起的。