2015-11-14 6 views
4

Я унаследовал огромный проект java maven и не могу его скомпилировать.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

Перейти на java 7 из 8, и ошибка исчезла. – user3217883

0

попробовать mvn clean compile -U ИЛИ mvn clean install -U

+0

Я пробовал оба, но тот же результат – user3217883

+0

На самом деле, я получаю другую ошибку с mvn clean install -e -U. [ИНФОРМАЦИЯ] ----------------------------------------------- ------------------------- [ОШИБКА] ОШИБКА СТРОЕНИЯ [INFO] --------------- -------------------------------------------------- ------- [INFO] Проблема сборки прокручиваемого приложения. Встроенная ошибка: com.sun.tools.apt.mirror.type.ClassTypeImpl не может быть добавлен в com.sun.mirror.type.AnnotationType [INFO] --------------------------------------------- --------------------------- [INFO] Trace org.apache.maven.lifecycle.LifecycleExecutionException: проблема сборки прокручиваемого приложения. – user3217883

0

пойти в м2 repository.delete все jars.Do МВН чистый install.If вы используете затмение сделать проект clean.right нажмите Проект-> maven-> обновление project.Hope это будет работать

+0

Я не могу этого сделать. Я работаю в автономном режиме, используя опцию -o, потому что унаследованный pom пытается получить доступ к репозиториям, которые больше не существуют, и никто не знает, что их заменило. Я установил все необходимые банки из предыдущего файла войны в локальное репо. Почему они не могут найти их? – user3217883

1

Файл jar находится в неправильной папке по сравнению с координатами, которые вы используете для зависимости. Мейвен не посмотрел бы в вашем месте. Правильный путь будет .m2/repository/com/sun/mirror/apt/apt-mirror-api/0,1/apt-mirror-api-0.1.jar.

Локальный репозиторий, который вы создали, недействителен. Я бы предложил вместо этого использовать диспетчер хранилища, например Nexus, и загрузить туда банки, а затем получить Maven для загрузки оттуда. Таким образом, вы создадите файлы pom, и структура будет автоматически исправлена ​​по сравнению с используемыми вами координатами GAV.

+0

небольшая коррекция: версия отсутствует '.m2/репозиторий/com/sun/mirror/apt/apt-mirror-api/0.1/apt-mirror-api-0.1.jar' –

+0

Я просто набрал неверный путь в сообщении , Просто исправил это. Вчера я спал над проблемой и пришел к аналогичному выводу. Один из репозиций, из которого он извлекает, - это связь, поэтому я посмотрю, смогу ли я загрузить ее. – user3217883