![](/img/trans.png)
[英]Maven compilation error for android Project “error: package R does not exist ”
[英]Maven compilation error: package does not exist
我正在嘗試將 maven 支持添加到現有企業項目中。 這是一個多模塊項目,前 2 個模塊編譯和 package 沒有問題,但我面臨編譯錯誤我嘗試在多個模塊中使用相同的依賴項。 我的結構是:
> + parent
> - pom.xml
> - module-1
> - pom.xml
> - module-2 (Depends on module-1)
> - pom.xml
> - module-3
> - pom.xml (Depends on both modules 1 and 2)
我在 Eclipse 上打開了項目,它沒有顯示任何錯誤。 當我從父級運行mvn clean install
時,它成功安裝了模塊 1 和 2,但在模塊 3 上失敗,說package xxx.yyy does not exist
並且Cannot find symbol XXXYYY
。 package xxx.yyy 和符號 XXXYYY 位於模塊 2 和 3 的依賴項中列出的 jar 中。
由於兩個模塊都依賴於相同的 jar,因此我嘗試僅添加對模塊 2 的依賴項,並且我相信模塊 3 由於傳遞依賴關系而應該看到它,但它看不到 package。 所以我嘗試將依賴項添加到模塊 2 和 3 pom 中,但問題仍然存在。
我已經檢查/嘗試過這些:
mvn dependency:copy-dependencies
我的項目的唯一特殊性是模塊 3 依賴於模塊 2,並且依賴於模塊 2 也依賴的庫。
下面我將粘貼來自模塊 2 和 3 的 pom。由於公司政策,我更改了一些名稱。
模塊二
<project xmlns="http://maven.apache.org/POM/4.0.0" ... >
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>Module2</artifactId>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>Module1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.company</groupId>
<artifactId>SharedArtifact</artifactId>
<version>1.1</version>
</dependency>
...
模塊 3
<project xmlns="http://maven.apache.org/POM/4.0.0" ... >
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>Module3</artifactId>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>Module2</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--<dependency>
<groupId>com.company</groupId>
<artifactId>SharedArtifact</artifactId>
<version>1.1</version>
</dependency>-->
...
而看不到的package在“SharedArtifact”里面。 當我從 Module2 中刪除依賴項時,它不會給出來自“SharedArtifact”package 的package does not exist
錯誤。 但隨后它給出了package does not exist
的 package。
由於 Module3 兩者都依賴於它們,因此看起來依賴關系正在以某種方式丟失。
我正在使用Java 1.6.0_29和Maven 3.0.5 。 And I can't upgrade to Java 7, because the project needs Java 6. And can't upgrade Maven, cause upgraded Maven only works with java 7 and higher.
更新 1:
我編譯時給出的錯誤如下:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] \Users\usuario\Documents\workspaces\myworkspace\qa\Module3\src\com\company\sharedartifact\package\SomeClass.java:[8,55]
package com.company.sharedartifact.package does not exist
[ERROR] \Users\usuario\Documents\workspaces\myworkspace\qa\Module3\src\com\company\sharedartifact\package\SomeClass.java:[9,55]
package com.company.sharedartifact.package does not exist
[ERROR] \Users\usuario\Documents\workspaces\myworkspace\qa\Module3\src\com\company\sharedartifact\package\SomeClass.java:[17,85]
cannot find symbol
symbol : class SomeOtherClass
由於公司政策,我無法粘貼整個 -X 日志,但如果某些部分是必要的,我可以更改一些名稱。
更新 2:
今天我剛剛發現如果運行mvn clean install
,它將無法編譯。 但是如果我運行mvn clean
,那么(在 Eclipse 中)我運行Maven Update project
,然后 `mvn install,它編譯!
自從我發現這一點以來,我已經提到了這個問題,並且我相信我的類路徑有問題。 當我使用 Weblogic Portal 應用程序時,我需要在 Eclipse 上保留一些共享庫(項目和運行時都需要的那些)。 可能在我的 pom 上忘記了一些圖書館。 奇怪的是,編譯聲稱不存在的 package 確實存在。
由於我的選項不多,我按照@ user944849的建議並將Maven 更新為版本3.3.9,將JDK 更新為1.8.0_60,但保持源和目標指向1.6的POM編譯器配置。
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
之后,模塊3開始編譯,但模塊4和5由於對某些JRockit庫的依賴而中斷。 為了解決這個問題,我最終更新了已棄用的代碼,最終完全編譯了項目。
所以我相信我使用的Maven版本存在問題。 不知何故,當2個項目依賴於同一個lib並且其中一個依賴於另一個時,它似乎迷失了。 我沒有測試過其他版本,但3.3.9適用於這些情況。
我遇到了同樣的問題,我使用全新安裝構建項目並選擇:解決工作區工件並成功構建項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.