Подтвердить что ты не робот

Сбой компиляции maven

У меня есть странная проблема - некоторые файлы классов не могут быть прочитаны во время сборки maven.

  • У меня есть проект A и project B.
  • Проект B зависит от проекта JAR файла проекта A.

Во время компиляции проекта B он не может читать lib в файле проекта A JAR, хотя часть, направленная к нему, идеальна.

Я также проверил и проверил maven script, и это прекрасно.

Ошибка:

[INFO] Compiling 137 source files to V:\dhs_tss_build_view\dhs_tssproject\tss\tsscommon-server\target\classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.java:[51,60] cannot find symbol
symbol  : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl


[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.BuildFailureException: Compilation failure
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:579)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330
)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
        at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516)
        at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558)
        ... 16 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 56 seconds
[INFO] Finished at: Mon Oct 19 09:46:53 CDT 2009
[INFO] Final Memory: 11M/20M
[INFO] ------------------------------------------------------------------------
4b9b3361

Ответ 1

У меня была такая же проблема, и я предлагаю вам исправить ее:

Run:

mvn dependency:list

и внимательно прочитайте, есть ли предупреждающие сообщения, указывающие, что для некоторых зависимостей не будет доступных транзитивных зависимостей.

Если да, запустите его с флагом -X:

mvn dependency:list -X

чтобы увидеть подробную информацию о том, что жалуется maven (может быть много выходных данных для флага -X)

В моем случае возникла проблема в зависимом модуле maven pom.xml - с управляемой зависимостью. Хотя была версия для управляемой зависимости, определенная в родительском pom, Maven не смог ее решить и жаловался на недостающую версию в зависимом pom.xml

Поэтому я просто сконфигурировал недостающую версию и проблема исчезла.

Ответ 2

Попробуйте использовать:

mvn clean package install

Эта команда должна установить ваши артефакты в вашем локальном репозитории maven.

PS: Я вижу, что это старый вопрос, но он может быть полезен для кого-то в будущем.

Ответ 3

Это МОЖЕТ быть из-за недостаточной памяти кучи.

Звучит странно, но попробуйте, это может сработать:

export MAVEN_OPTS='-Xms384M -Xmx512M -XX:MaxPermSize=256M'

Источник: https://groups.google.com/group/neo4j/msg/e208be9ee1c101d7)

Ответ 4

Вы можете попробовать запустить команду "mvn site" и посмотреть, какие транзитивные зависимости у вас есть, а затем разрешить потенциальные конфликты (опустив какую-то неявную зависимость). Просто догадаться (немного сложно понять, что может быть проблема, не видя вашу информацию о pom)...

Ответ 5

У меня есть такая ошибка, но после

1/

 mvn eclipse:clean
    mvn eclipse:eclipse -Dwtpversion=2.0

2/ запустите eclipse и откройте проект

3/

mvn package

работает

Ответ 6

У меня была аналогичная проблема и никогда не находил ничего в Интернете после чрезмерного поиска.

Я просмотрел файл pom.xml, и в зависимостях я изменил область <dependency>: <scope>test</scope> до <scope>compile</scope>.

Раньше я использовал его только для тестов, но я меняю структуру проекта и никогда не знал, что я хочу это изменить.

test: В этой области указывается, что зависимость не требуется для нормальное использование приложения и доступно только для теста фаз компиляции и выполнения.

compile: Это область по умолчанию, которая используется, если ни один не указан. компилировать зависимости доступны во всех классах проекта. Кроме того, эти зависимости распространяются на зависимые проекты.

Вот ссылка от Apache Maven Docs: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

Ответ 7

Мое предположение - неправильная версия проекта Jar в вашем локальном хранилище maven. Кажется, что зависимость разрешена в противном случае, я думаю, что maven не начинает компиляцию, но обычно эта компиляционная ошибка означает, что у вас есть версия. попробуйте сделать maven clean install вашего проекта A и посмотреть, не изменит ли он что-то для проекта B... Также вам может понадобиться немного больше информации о вашей настройке:

  • Как запускается maven? какая команда? на оболочке, IDE (с использованием плагина или нет) на сервере CI?
  • Какую команду maven вы используете?

Ответ 8

Ошибка довольно ясна: "невозможно найти символ". Некоторые зависимости не могут быть решены (у вас даже есть строка и столбец в трассе ссылки, которая не может быть решена):

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.java:[51,60] cannot find symbol
symbol  : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl

Ниже приведено несколько подтверждений:

  • Проверить или перепроверять, что эти классы в банке A (такая же версия, что и в pom)
  • Проверить или перепроверять оператор импорта в B-источниках (должен соответствовать пакету классов в A)
  • Проверить или перепроверять B pom.xml и особенно объявление зависимости от A (его версии)
  • Убедитесь, что зависимость от A не исключается транзитивно где-то в B pom
  • Является ли зависимость A SNAPSHOT? Если нет, удалите A из своего локального репозитория и перестройте

Maven отлично работает, у вас где-то есть ошибка.

Ответ 9

У меня была та же проблема...

Как исправить - добавьте следующие свойства в pom.xml

<properties>
    <!--  compiler settings -->
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
</properties>        

Ответ 10

Это также имеет значение для порядка зависимостей. У меня была такая же проблема. И в основном мне пришлось поставить сначала scope test, а затем scope compile зависимости в pom.xml. Если я поставлю сначала scope compile, а затем scope test, он не сработает.

Ответ 11

перейдите в репозиторий maven и откройте jar [совет: вы можете использовать winzip] исходного модуля для проверки присутствия конкретного класса.

В моем случае это не так. Затем я нашел ниже.

если вы используете плагин org.apache.felix/maven-bundle-plugin

Убедитесь, что в исходном модуле определен экспортный пакет

example: com.xxx.camel.dao

Ответ 12

Внутри ваших классов, на которых жалуется maven, есть некоторая зависимость, которая принадлежит некоторому jar, попробуйте, чтобы эти баночки перестроили с помощью команды maven, я использую эту команду mvn clean install -DskipTests=true, должен работать в этом случае, когда некоторые символы из классов отсутствует

Ответ 13

У меня была такая же проблема (хотя проект компилировался/работал нормально в Eclipse), это было не при использовании сборки командной строки. Причина заключалась в том, что я не использовал правильную структуру папок для mvn: "src/main/java/com" и т.д. Он просматривает эти папки по умолчанию (я использовал "/scr/main/com" и т.д., Которые вызванные проблемы).

Ответ 14

Если ваши зависимости в порядке (проверьте с помощью mvn dependency: list), как у меня, тогда это сбой в maven, если вы используете Eclipse do:

  • Щелкните правой кнопкой мыши проект > Maven > Обновить проект...
  • Проверить все, кроме офлайн
  • OK

Вы должны быть хорошими.

Я не знаю эквивалентных команд mvn, если кто-нибудь может опубликовать их, они могут быть полезны.

Ответ 15

Легко получить эту ошибку в многомодульном проекте. Если, например, вы внесли изменения в модули A, B и C, но затем вы пытаетесь скомпилировать только модуль B, вы подвержены этой ошибке. Скажем, модуль B имеет зависимость от модуля A. Поскольку только модуль B был скомпилирован, файлы классов из модуля A теперь устарели и, возможно, недействительны.

Компиляция всех модулей (или модулей в правильном иерархическом порядке зависимостей) разрешает эту ошибку, если это характер вашей проблемы.

Ответ 16

После выполнения следующей команды: - mvn clean package install

Я нашел проблему:
'dependencies.dependency.scope' для org.springframework.boot: spring -boot-starter-data-rest: pom должен быть одним из [предоставленных, компиляции, времени выполнения, тестирования, системы], но является "импортом", @строка 13, столбец 11

Одна из зависимостей была отмечена как "импорт". Изменение "области действия" решило проблему для меня.

Ответ 17

Только сейчас я тоже столкнулся с проблемой

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project entry-api: Compilation failure: Compilation failure:

package com.foo.entry.common.domain does not exist
package com.foo.entry.common.model does not exist
package com.foo.entry.common.service does not exist
package com.foo.entry.common.util does not exist

Потребовалось много времени, чтобы получить причину, которая заключается в том, что одна из jar зависимостей - это пружинная загрузка fat jar, поэтому решение состоит в том, чтобы перейти ниже кода в его pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Ответ 18

Добавьте <sourceDirectory>src</sourceDirectory> в ваш pom.xml с соответствующей ссылкой. Добавление этого решило мою проблему