Внутренняя ошибка произошла во время: «Обновление проекта Maven». java.lang.NullPointerException


91

Я разрабатываю веб-проект Java EE. Когда я пытаюсь добавить зависимость, появляется это сообщение об ошибке. Я использую Eclipse Kepler.

Внутренняя ошибка произошла во время: «Обновление проекта Maven». java.lang.NullPointerException

Не могли бы вы помочь мне? Спасибо.

введите описание изображения здесь


1
Вы используете eclipse? вы можете опубликовать всю трассировку стека? Вы можете найти его в режиме просмотра «Журнал ошибок».
Пабло Ласкано,

очистите свои .metadata в папке рабочей области, можете решить эту проблему. Но вы теряете конфигурации своего рабочего места. = (
Фернандо Гомес

Ответы:


155

Я решил проблему, удалив .settingsпапку и .projectфайл в проекте, а затем повторно импортировав проект.


5
Я много чего пробовал, и это за меня сделала папка .settings.
Саймон

Это помогло! Но поскольку я использовал разрешение рабочей области для разрешения некоторых зависимостей pom для проекта в той же рабочей области, мне пришлось отключить разрешение рабочей области, затем отключить Maven Nature, а затем снова включить Maven в проекте.
mcolley73

1
Джеп, это сработало для меня, похоже, это также относится к версии Google App Engine, которой у меня больше не было (она была обновлена)
Дитер Хубау 05

Также пришлось перезапустить eclipse перед повторным импортом.
rakmoh

Я решил это, просто удалив все файлы .settings, закрыв перед Eclipse. Затем я выполнил обновление maven.
isma.imc

25

Для меня сработал ответ, который я нашел на CodeRanch пользователем Maneesh Godbole :

  1. Близкое затмение.
  2. Перейдите в папку "рабочая область"
  3. Убедитесь, что в вашей ОС включена настройка просмотра скрытых файлов.
  4. Определите и удалите каталог .metadata
  5. Перезапустить затмение
  6. Импортировать проект

1
Это был единственный ответ, который работал у меня. Элементы .settings и .project воссоздались при запуске, вызывая ту же проблему, пока я не удалил папку метаданных. +1 и спасибо!
Mark W

@MarkW Я рад, что помогло :-)
Угорь Ли

Для меня это работает, но мне нужно было заново настроить все мое рабочее пространство. = (
Фернандо Гомес

он удаляет все мои настройки в eclipse. Макет, перспективы и цвета исчезли.
Умут

6

У меня была такая же проблема в одном из моих модулей.

Запуск "mvn eclipse: eclipse" в консоли / cmd решил проблему для меня.


3

В нашем случае этой проблемы у нас были pom.xmlфайлы, в которых конфигурация отображения жизненного цикла для m2e

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
...

не было <version>1.0.0</version> роли. При выполнении Maven -> Update Project ... это вызывает сообщение об исключении NullPointerException без трассировки стека. При использовании свежего импорта ... -> Существующие проекты Maven возникло то же исключение, но с трассировкой стека, которая привела меня к обнаружению вышеуказанного.

(Это с m2e 1.6.1.20150625-2338 в Eclipse Luna Service Release 2 (4.4.2).)


1
Так было со мной. Думаю, у описанной проблемы много разных причин.
Александр Ерохин

2

Если это кому-то поможет, помимо удаления .settingsи .projectмне пришлось удалить .classpathи .factorypathдо того, как я смог успешно импортировать проект в Eclipse.


1

Файл org.eclipse.m2e.core.prefs находится в папке .settings . Если вы столкнетесь с проблемой

An internal error occurred during: "Updating Maven Project". java.lang.NullPointerException

Удалить проект из затмения затем, удалив .settings папки и .project файла в проекте -> затем повторно импортировать проект.


Этот ответ уже существует и набрал наибольшее количество голосов, поэтому я не вижу смысла публиковать дубликат.
Угорь Ли

Кто-нибудь упоминал об "org.eclipse.m2e.core.prefs"? Я хочу сказать, в чем причина проблемы.
Джиоти Пракаш

Возможно, комментарий к основному ответу - лучшее место, чтобы обсудить, почему
Дж. Аллен

1

Ни один из вышеперечисленных методов у меня не помог. Это также может возникнуть из-за наличия круговой зависимости в вашем рабочем пространстве eclipse. Поэтому, если есть какие-либо другие ошибки, присутствующие в любом из других проектов в вашей рабочей области, попробуйте исправить их, и тогда эта проблема исчезнет. Вот как я устранил ошибку.




1

В Eclipse есть журнал ошибок. Там вы увидите полную трассировку стека. В моем случае это, похоже, вызвано плохим файлом jar в сочетании с библиотеками java.util.zip, которые не генерируют правильное исключение, а просто NullPointerException.


В моем случае этот сценарий был инициирован парой JAR-файлов javadoc из Selenium, например, repo1.maven.org/maven2/org/seleniumhq/selenium/selenium-java/… . В источнике Eclipse m2e на git.eclipse.org/c/m2e/m2e-core.git/tree/org.eclipse.m2e.jdt/src/… вы можете видеть, что метод getJavaDocPathInArchive не ожидает NullPointerException из en.nextElement ().
Jeremy K

По-видимому, исключение NullPointerException из перечисления ZIP-файла адресовано в Java 9 ( bugs.openjdk.java.net/browse/JDK-8048990 ).
Джереми К.

1

Я использую:

Eclipse Java EE IDE для веб-разработчиков.

Версия: Neon.3 Release (4.6.3) Идентификатор сборки: 20170314-1500

Исправление / трюк для меня заключалось в удалении моего локального репозитория в ~ / .m2 / repository, чтобы удалить локальные зависимости и перестроить мой проект, в котором были удалены новые зависимости.


0

У меня такая же проблема. Ни одно из решений здесь не сработало. Мне пришлось полностью переустановить eclipse и создать новое рабочее пространство. Тогда это сработало!


0

У меня была такая же проблема в нескольких проектах и ​​нескольких рабочих областях, ни одно из решений, которые я нашел в Интернете, не помогло мне. Я использую STS, и единственное, что сработало, - это зайти в мой каталог STS и добавить «-clean» в начало файла STS.ini. Затем вы можете запустить свое рабочее пространство и запустить maven clean без ошибок. (вы также можете удалить тег -clean из файла ini, чтобы он не очищался каждый раз, когда вы его запускаете)

Надеюсь, это кому-то поможет.


0

Основная проблема в моем случае заключалась в конфликте файлов в папке .settings. Итак, удаление папки .settings разрешило бы ошибку Maven, но я хотел сохранить некоторые из моих локальных файлов конфигурации. Я разрешил конфликт, затем снова попробовал обновить Maven, и это сработало.


0

У меня была такая же проблема ... решение в конце!

вот журнал затмения:

java.lang.NullPointerException
    at com.google.appengine.eclipse.wtp.maven.GaeRuntimeManager.getGaeRuntime(GaeRuntimeManager.java:85)
    at com.google.appengine.eclipse.wtp.maven.GaeRuntimeManager.ensureGaeRuntimeWithSdk(GaeRuntimeManager.java:55)
    at com.google.appengine.eclipse.wtp.maven.GaeFacetManager.addGaeFacet(GaeFacetManager.java:59)
    at com.google.appengine.eclipse.wtp.maven.GaeProjectConfigurator.configure(GaeProjectConfigurator.java:46)

... он исходит из "плагина appengine maven wtp", который пытается получить тип среды выполнения GAE, но, похоже, здесь значение null (... getRuntimeType () -> NPE):

см. класс com.google.appengine.eclipse.wtp.maven / GaeRuntimeManager.java

  private static IRuntime getGaeRuntime(String sdkVersion) {
    IRuntime[] runtimes = ServerCore.getRuntimes();
    for (IRuntime runtime : runtimes) {
      if (runtime != null &&  **runtime.getRuntimeType()**.equals(GAE_RUNTIME_TYPE)) {

Итак, если вы отметите eclipse, Google App Engine будет виден, но когда вы выберете его, вы увидите, что SDK не связан ... предпочтение / Сервер / Среда выполнения

РЕШЕНИЕ: на скриншоте красным ;-)


0

Я столкнулся с этим же симптомом, и ни одно из вышеперечисленных решений не помогло. Я, наконец, получил трассировку проблемы в стеке, снова импортировав проект уха в eclipse, и смог отследить это до org.eclipse.m2e.wtp.MavenDeploymentDescriptorManagement, который пытался удалить каталог во временном каталоге Windows с именем " .mavenDeploymentDescriptorManagement ", который вызвал иррациональное исключение NullPointerException из метода java.io.File.exists (), особенно потому, что код уже успешно проделал то же самое в предыдущем методе с той же переменной, а затем вызвал file.isFile () без проблема.

Проверка этого в файловой системе показала, что доступ к файлу возможен только с правами администратора. Видимо, в какой-то момент я по ошибке запустил eclipse из консоли администратора. В конце концов, я просто сделал скрытые файлы видимыми в проводнике Windows и вручную удалил временный файл, что решило проблему.


0

Еще один возможный источник проблемы!

Я выяснил, что в моем случае resourceпричиной этого был следующий блок:

<project>
    <build>
        <resources>
            <resource>
                <directory>${basedir}/../some-folder</directory>
                <targetPath>outputFolder</targetPath>
            </resource>
        <resources>
    </build>
</project>

Он включал папку из папки проекта ( проект eclipse является подпапкой версионного проекта ).

В моем случае я мог бы удалить ошибку, удалив блок и заменив его вызовом плагина Build helper Maven:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.9.1</version>
            <executions>
                <execution>
                    <id>my-own-very-cool-id-for-this-step</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>add-resource</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>${basedir}/../some-folder</directory>
                                <targetPath>outputFolder</targetPath>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

0

Мне пришлось переустановить eclipse, удалить папку .m2 и перестроить банки.


0

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

maven давал мне эту ошибку:

Не удалось разрешить зависимости для проекта MyProject: MyProject: jar: 1.0.0: не удалось разрешить конфликт версий между Dependency-A: 1.0.1 -> Dependency-B: 1.1.0 -> Dependency-C: 1.0.0 , Dependency- X: 1.0.1 -> Dependency-Y: 1.1.0 -> Dependency-C: 1.0.0 , Dependency-I: 1.0.1 -> Dependency-J: 1.1.0 -> Dependency-C: 1.0.0

Я перепробовал все вышеперечисленное, но ничего не помогло, так что ...

РЕШЕНИЕ : используйте ПОСЛЕДНЮЮ версию в качестве версии во всех зависимостях, поэтому maven не нужно разрешать все зависимости в диапазонах, которые необходимо использовать с осторожностью, потому что, если вы пропустите развертывание одной из зависимостей, сборка завершится ошибкой.

Только я предлагаю вам использовать ПОСЛЕДНИЕ, если вы работаете со своими собственными зависимостями, иначе в какой-либо будущей третьей версии вы можете найти некоторые ошибки компиляции или выполнения.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.