Внутрішня помилка сталася під час: “Оновлення проекту Maven”. java.lang.NullPointerException


91

Я розробляю веб-проект Java EE. Коли я намагаюся додати залежність, з'являється це повідомлення про помилку. Я використовую Eclipse Kepler.

Внутрішня помилка сталася під час: "Оновлення проекту Maven". java.lang.NullPointerException

Не могли б ви мені допомогти? Дякую.

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


1
Ви використовуєте затемнення? Ви можете опублікувати всю трасу стека? Ви можете знайти його у вікні "Журнал помилок".
Пабло Ласкано,

очистіть свої .metadata в папці робочої області, це може вирішити. Але ви втрачаєте конфігурації робочого простору. = (
Фернандо Гомес

Відповіді:


152

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


4
Я спробував багато речей, і це зробила за мене папка .settings.
simon

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

1
Джеп, це працювало у мене, схоже, це також стосувалося версії Google App Engine, якої я вже не мав (вона була оновлена)
Дітер Хубау

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

Я вирішив це, просто видаливши всі файли .settings, закривши перед Eclipse. Потім я виконав оновлення maven.
isma.imc

25

Для мене спрацювала відповідь, яку я знайшов на CodeRanch від користувача Maneesh Godbole :

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

1
Це була єдина відповідь, яка мені працювала. Елементи .settings та .project відтворювались під час запуску, що спричиняло ту саму проблему, доки я не видалив папку метаданих. +1 & thx!
Mark W

@MarkW Я радий, що допомогло :-)
Eel Lee

Для мене це працює, але мені потрібно було повторно налаштувати всю свою робочу область. = (
Фернандо Гомес

він видаляє всі мої налаштування на 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 -> оновлення ... це спричиняє звіт NullPointerException без трасування стека. При використанні свіжого Імпорту ... -> Існуючі проекти Maven стався той самий виняток, але з трасуванням стека, який змусив мене знайти вищезазначене.

(Це стосується m2e 1.6.1.20150625-2338 у версії 2 Eclipse Luna Service (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 має журнал помилок. Там ви побачите повну трасу стека. У моєму випадку це, здається, спричинене поганим файлом 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 ().
Джеремі К,

Очевидно, "NullPointerException" від перерахування ZIP-файлу адресується в Java 9 ( bugs.openjdk.java.net/browse/JDK-8048990 ).
Jeremy K

1

Я використовую:

Eclipse Java EE IDE для веб-розробників.

Версія: Випуск Neon.3 (4.6.3) Ідентифікатор збірки: 20170314-1500

Виправлення / хитрість для мене було видалення мого локального сховища в ~ / .m2 / сховищі з метою видалення локальних залежностей та відновлення мого проекту, в якому витягуються нові залежності.


0

У мене була та сама проблема. Жодне з вирішень тут не спрацювало. Мені довелося повністю перевстановити eclipse і створити нову робочу область. Тоді це спрацювало!


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)

... це походить від "додаткового модуля wtp appevenine maven", який намагається отримати тип середовища виконання GAE, але, здається, тут нуль (... 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 Magin:

<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 -> Залежність-Y: 1.1.0 -> Залежність-C: 1.0.0 , Залежність-I: 1.0.1 -> Залежність-J: 1.1.0 -> Залежність-C: 1.0.0

Я спробував усе вище, і нічого не вийшло, тому ...

РІШЕННЯ : Використовуйте ОСТАННЮ як версію у всіх залежностях, тому maven не потрібно вирішувати всі залежності в діапазонах, що слід використовувати обережно, тому що якщо ви пропустите розгортання однієї із залежностей, збірка не вдасться

Тільки я пропоную вам використовувати ОСТАННІЙ, якщо ви працюєте зі своїми власними залежностями, інакше в якійсь сторонній майбутній версії ви можете знайти деякі помилки компіляції або виконання


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.