2017-08-09 46 views
0

我的问题:
我创建了一个Maven项目。我已经导入了一个存储库(称为Kumo)。在Maven配置XML文件中,我没有出现错误。我尝试使用其中一个类时出现错误。
它告诉我:Cannot resolve symbol 'WordCloud'即使包成功,Intellij maven“无法解析符号”

我曾尝试与(我认为)没有结果:

  • 无效缓存
  • 重新启动的IntelliJ
  • 重新导入所有的Maven项目按钮
  • 生成源按钮
  • 下载源按钮
  • 添加编译XML标签
  • 试图在Windows上创建这个项目产生同样的结果

的pom.xml:

<?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_1.java:

public class Test_1 { 
    WordCloud cloud; 
    FrequencyAnalyzer analyzer; 
} 

Test_2.java:

package Example; 

public class Test2 { 
    WordCloud cloud; 
    FrequencyAnalyzer analyzer; 
} 

layout

pom.xml

what classes look like

+0

尝试使用'import'假设该类存在于'kumo'罐中 –

+0

我试过这样做,它找不到任何要导入的东西。什么工作是将4个子依赖项添加到pom.xml中 –

+0

也许你只是想'kumo-api' –

回答

1

至于建议的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>

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

和Maven的dependencyManagement主要用于以下项目,

  1. 当你有一组项目继承一个共同的父有可能把有关共同POM的依赖关系的所有信息,并有简单的引用孩子POM中的文物。
  2. 来控制传递依赖中使用的工件的版本。这意味着如果您在<dependencyManagement>部分中定义工件的版本,那么您可以在<dependencies>部分中声明版本,而不使用版本。

您可能还会参考Introduction to the Dependency Mechanism获取更多示例以供进一步研究。

+0

虽然我用另一种方式解决了我的问题,但这绝对是正确的做法,并且包含对WHY的很好解释。谢谢,我现在也更好地理解Maven。 –

0

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

+0

不是第一次或最后一次这样的事情结束在maven库。 – jwenting

0

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