在“更新Maven项目”期间发生内部错误。java.lang.NullPointerException


91

我正在开发一个Java EE Web项目。当我尝试添加依赖项时,会出现此错误消息。我使用Eclipse Kepler。

在“更新Maven项目”期间发生内部错误。java.lang.NullPointerException

你可以帮帮我吗?谢谢。

在此处输入图片说明


1
您正在使用日食吗?您可以发布整个堆栈跟踪信息吗?您可以在“错误日志”视图中找到它。
Pablo Lascano

清除工作区文件夹中的.metadata,即可解决此问题。但是您会丢失工作区的配置。=(
费尔南多·戈麦斯

Answers:


152

通过删除项目中的.settings文件夹和.project文件,然后重新导入项目,我解决了我的问题。


4
我尝试了很多事情,而.settings文件夹正是为我做的。
simon 2014年

这有帮助!但是,由于我使用工作区分辨率来解析同一工作区中项目的某些pom依赖关系,因此我必须禁用工作区分辨率,然后禁用Maven Nature,然后在项目上重新启用Maven。
mcolley73 2014年

1
Jep,为我工作,似乎还指的是我不再拥有的Google App Engine版本(已更新)
Dieter Hubau,2014年

还必须在重新导入之前重新启动eclipse。
rakmoh

我解决了它,只是删除了所有.settings文件,在Eclipse之前关闭了。然后我执行了一个Maven更新。
isma.imc

25

对我来说,用户Maneesh GodboleCodeRanch上找到了答案 :

  1. 月蚀。
  2. 导航到“工作区”文件夹
  3. 确保操作系统上的用于查看隐藏文件的设置已打开
  4. 识别并删除.metadata目录
  5. 重新开始蚀
  6. 导入项目

1
这是唯一对我有用的答案。启动时会重新创建.settings和.project实体,导致同样的问题,直到我删除了元数据文件夹。+1&thx!
Mark W

@MarkW我很高兴为您提供了帮助:-)
Eel Lee

对我来说,它可以工作,但是我需要重新配置所有工作区。=(
Fernando Gomes

它会删除我在Eclipse上的所有设置。布局,视角和颜色都消失了。
Umut,

6

我的一个模块遇到了同样的问题。

在console / cmd中运行“ mvn eclipse:eclipse”对我来说解决了这个问题。


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,而没有堆栈跟踪。当使用全新的Import ...-> Existing Maven项目时,发生了相同的异常,但是堆栈跟踪使我找到了上面的内容。

(这是Eclipse Luna Service Release 2(4.4.2)中的m2e 1.6.1.20150625-2338。)


1
对我来说就是这种情况。我猜描述的问题有很多不同的原因。
Aleksandr Erokhin

2

如果它可以帮助任何人,那么除了删除.settings和之外.project,我还必须删除.classpath.factorypath才能将项目成功导入Eclipse。


1

org.eclipse.m2e.core.prefs文件位于.settings文件夹中。如果您面对的问题

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

从Eclipse中删除项目,然后删除项目中的.settings文件夹和.project文件->然后重新导入该项目。


这个答案已经存在并且投票最多,因此我认为发布重复副本毫无意义。
Eel Lee

有没有人提到过“ org.eclipse.m2e.core.prefs”?我的意思是说问题背后的原因是什么。
Jyoti Prakash 2015年

也许对主要答案发表评论是讨论为什么的最佳地点
J. Allen

1

这对我有帮助: Project menu -> Clean... -> clean all projects



1

Eclipse有一个错误日志。在那里,您将看到完整的堆栈跟踪。就我而言,这似乎是由于jar文件错误以及java.util.zip库没有抛出适当的异常(仅仅是NullPointerException)而引起的。


就我而言,此场景是由Selenium的几个javadoc JAR触发的,例如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方法不需要来自en.nextElement()的NullPointerException。
杰里米·K

显然,Java 9(bugs.openjdk.java.net/browse/JDK-8048990)解决了枚举ZIP文件引起的“ NullPointerException”问题。
杰里米·K

1

我正在使用:

用于Web开发人员的Eclipse Java EE IDE。

版本:Neon.3 Release(4.6.3)Build ID:20170314-1500

对我而言,修复/技巧是删除〜/ .m2 / repository中的本地存储库,以便删除本地依赖关系,并重建其中下拉了新依赖关系的项目。


0

我有同样的问题。这里没有解决方案。我必须完全重新安装eclipse并创建一个新的工作区。然后成功了!


0

以上方法都不适合我。这也可能是由于您的Eclipse工作区中存在循环依赖关系而引起的。因此,如果工作空间中的任何其他项目中存在任何其他错误,请尝试修复这些错误,然后此问题将消失。这就是我消除错误的方法。


0

我在多个项目和多个工作区中都遇到了同样的问题,我在网上发现的所有解决方案都对我无效。我正在使用STS,唯一起作用的是进入我的STS目录,并在STS.ini文件的顶部添加“ -clean”。然后,您可以启动工作空间并运行maven clean,而不会出现错误。(您也可以从ini文件中删除-clean标记,这样就不会在每次启动时都将其清除)

希望这对某人有帮助。


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)

...它来自试图获取GAE运行时类型的“ appengine maven wtp插件”,但此处似乎为空(... 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

我遇到了相同的症状,以上解决方案均无济于事。我终于通过再次导入ear项目以进行蚀来对问题进行堆栈跟踪,并能够将其跟踪到org.eclipse.m2e.wtp.MavenDeploymentDescriptorManagement,该尝试试图删除Windows临时目录中的目录“ “ .mavenDeploymentDescriptorManagement”,它导致java.io.File.exists()方法出现非理性的NullPointerException,特别是因为代码已经成功地在以前的方法中使用了相同的变量,然后调用了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文件夹并重建jar。


0

在我的情况下,问题是其他依赖项使用了派生的依赖项冲突,并且某些派生的依赖项版本不可用,可能是因为我忘了做一些部署,因为使用工作空间解析,一切正常,但是在移动时到其他环境突然全部崩溃了。而且我也在使用版本范围

专家给我这个错误:

无法解决项目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

我尝试了以上所有方法,但没有任何效果,所以...

解决方案:在所有依赖项中使用LATEST作为版本,因此maven不需要解析范围内的所有依赖项,必须谨慎使用,因为如果您错过部署其中一个依赖项,构建将会失败

仅当您使用自己的依赖项时,我才建议您使用LATEST,否则在某些第三方将来的版本中,您可能会发现一些编译或运行时错误


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.