2015-11-14 155 views
4

我已經繼承了一個巨大的maven java項目,無法編譯它。maven找不到類

mvn compile 

它告訴我即使它在當地的回購倉庫中找不到類。

Failed to execute goal org.codehaus.enunciate:maven-enunciate-plugin:1.25:assemble (default) on project VCWH_Core_QueryService: Execution default of goal org.codehaus.enunciate:maven-enunciate-plugin:1.25:assemble failed: A required class was missing while executing org.codehaus.enunciate:maven-enunciate-plugin:1.25:assemble: com/sun/mirror/apt/AnnotationProcessorFactory 

這裏是pom.xml的片段,告訴它到哪裏尋找:

<dependency> 
    <groupId>com.sun</groupId> 
    <artifactId>tools</artifactId> 
    <version>1.7</version> 
</dependency> 

果然,工具-1.7.jar和工具,1.7.pom位於當地的回購

\.m2\repository\com\sun\tools\1.7

如果我看罐內與 jar tf tools-1.7.jar 我可以看到 類

com/sun/mirror/apt/AnnotationProcessorFactory.class

我也吹散了我的本地回購太陽文件夾,並做了「清理並生成」在NetBeans觀看落日文件夾回來到我的本地回購,所以我知道的連通性遠程回購很好。

爲什麼找不到它?

回答

0

需要把它添加到Maven的字正腔圓,插件:

     <dependencies> 
          <dependency> 
           <groupId>com.sun</groupId> 
           <artifactId>tools</artifactId> 
           <version>1.7</version> 
           <scope>system</scope> 
           <systemPath>C:\Program Files\Java\jdk1.7.0_79\lib\tools.jar</systemPath> 
           <optional>true</optional> 
          </dependency> 
         </dependencies> 

現在看起來是這樣的:

<plugin> 
       <groupId>org.codehaus.enunciate</groupId> 
       <artifactId>maven-enunciate-plugin</artifactId> 
       <version>1.25</version> 
       <configuration> 
        <configFile>${basedir}/src/main/webapp/WEB-INF/enunciate.xml</configFile> 
        <compileDebug>false</compileDebug> 
        <addGWTSources>false</addGWTSources> 
        <addActionscriptSources>false</addActionscriptSources> 
       </configuration> 
       <dependencies> 
        <dependency> 
        <groupId>com.sun</groupId> 
        <artifactId>tools</artifactId> 
        <version>1.7</version> 
        <scope>system</scope> 
        <systemPath>C:\Program Files\Java\jdk1.7.0_79\lib\tools.jar</systemPath> 
        <optional>true</optional> 
        </dependency> 
       </dependencies> 

       <executions> 
        <execution> 
         <goals> 
          <goal>assemble</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

但是,現在有一個新的錯誤:

Failed to execute goal org.codehaus.enunciate:maven-enunciate-plugin:1.25:assemble (default) on project VCWH_Core_QueryService: Problem assembling the enunciate app. com.sun.tools.apt.mirror.type.ClassTypeImpl cannot be cast to com.sun.mirror.type.AnnotationType -> [Help 1] 

任何人都知道如何解決這個問題?

+0

從8降級到java 7,錯誤消失。 – user3217883

0

嘗試mvn clean compile -Umvn clean install -U

+0

我嘗試了兩個,但結果相同 – user3217883

+0

其實我得到一個不同的錯誤與mvn乾淨安裝-e -U。 [INFO] ----------------------------------------------- ------------------------- [錯誤]編譯錯誤 [信息] --------------- -------------------------------------------------- ------- [信息]彙編語音應用程序的問題。 嵌入式錯誤:com.sun.tools.apt.mirror.type.ClassTypeImpl無法轉換爲com.sun.mirror.type。AnnotationType [INFO] --------------------------------------------- --------------------------- [INFO]跟蹤 org.apache.maven.lifecycle.LifecycleExecutionException:組裝聲明應用程序的問題。 – user3217883

0

去你的M2 repository.delete所有jars.Do MVN清潔install.If使用的是Eclipse做一個項目clean.right單擊項目 - > maven->更新project.Hope這將起作用

+0

我不能那樣做。我使用-o選項以脫機模式運行,因爲我繼承的pom嘗試訪問不再存在的回購站,並且沒有人知道替換它們的回購站。我已經把所有需要的jar文件從前面的war文件安裝到本地repo中。爲什麼它找不到它們? – user3217883

1

與您用於依賴關係的座標相比,jar文件位於錯誤的文件夾中。 Maven不會看你的位置。正確的路徑是.m2/repository/com/sun/mirror/apt/apt-mirror-api/0.1/apt-mirror-api-0.1.jar。

您創建的本地存儲庫無效。我建議改爲使用像Nexus這樣的存儲庫管理器,然後上傳jar文件,然後從那裏下載Maven。通過這種方式,您可以創建pom文件,並且與您使用的GAV座標相比,結構將自動更正。

+0

小修正:版本丟失'.m2/repository/com/sun/mirror/apt/apt-mirror-api/0.1/apt-mirror-api-0.1.jar' –

+0

我只是在文章中輸入錯誤的路徑。只是修復它。我昨晚睡在這個問題上,得出了類似的結論。其中一個回報是一個聯繫,所以我會看看我是否可以上傳它。 – user3217883