2017-08-09 110 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無法找到該類引起的。