我正在开发一个 Java EE Web 项目。当我尝试添加依赖项时,会出现此错误消息。我使用 Eclipse 开普勒。
在“更新 Maven 项目”期间发生内部错误。java.lang.NullPointerException
你可以帮帮我吗?谢谢你。
我正在开发一个 Java EE Web 项目。当我尝试添加依赖项时,会出现此错误消息。我使用 Eclipse 开普勒。
在“更新 Maven 项目”期间发生内部错误。java.lang.NullPointerException
你可以帮帮我吗?谢谢你。
我通过删除项目中的.settings
文件夹和.project
文件然后重新导入项目来解决我的问题。
对我来说,我在 CodeRanch上找到了用户Maneesh Godbole的答案:
- 关闭日食。
- 导航到您的“工作区”文件夹
- 确保您的操作系统上查看隐藏文件的设置已打开
- 识别并删除 .metadata 目录
- 重启日食
- 导入项目
我在我的一个模块中遇到了同样的问题。
在控制台/cmd 中运行“mvn eclipse:eclipse”为我解决了这个问题。
如果它对任何人有帮助,除了删除.settings
and之外.project
,我还必须删除.classpath
and.factorypath
才能将项目成功导入 Eclipse。
在我们的这个问题的实例中,我们有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 没有堆栈跟踪。当使用新的 Import... -> Existing Maven Projects 时,发生了同样的异常,但有一个堆栈跟踪导致我找到上述内容。
(这是 Eclipse Luna Service Release 2 (4.4.2) 中的 m2e 1.6.1.20150625-2338。)
以上方法都不适合我。这也可能是由于 Eclipse 工作区中存在循环依赖而出现的。因此,如果您的工作区中的任何其他项目中存在任何其他错误,请尝试修复这些错误,然后这个问题就会消失。这就是我消除错误的方式。
org.eclipse.m2e.core.prefs文件位于.settings文件夹中。如果您面临以下问题
An internal error occurred during: "Updating Maven Project". java.lang.NullPointerException
从eclipse中删除项目,然后删除项目中的.settings文件夹和.project文件->然后重新导入项目。
上述解决方案对我不起作用,因为打开 JDK 13 版本的问题 https://github.com/spotify/dockerfile-maven/issues/163 所以我降级以打开 JDK8,它对我有用
我在用着:
面向 Web 开发人员的 Eclipse Java EE IDE。
版本:Neon.3 Release (4.6.3) 内部版本号:20170314-1500
我的修复/技巧是删除 ~/.m2/repository 中的本地存储库,以删除本地依赖项并重建我的项目,其中新的依赖项被拉下。
Eclipse 有一个错误日志。在那里您将看到完整的堆栈跟踪。在我的情况下,这似乎是由于一个错误的 jar 文件与 java.util.zip 库结合没有引发适当的异常,只是一个 NullPointerException。
这帮助了我:Project menu -> Clean... -> clean all projects
我有同样的问题。这里的解决方案都不起作用。我不得不完全重新安装 eclipse 并创建一个新的工作区。然后它起作用了!
我在多个项目和多个工作区中遇到了同样的问题,我在网上找到的解决方案都不适合我。我正在使用 STS,唯一有效的是进入我的 STS 目录并在 STS.ini 文件的顶部添加一个“-clean”。然后,您可以启动您的工作区并运行 maven clean 而不会出现错误。(您也可以从 ini 文件中删除 -clean 标签,这样每次启动时它都不会清理)
希望这可以帮助某人。
就我而言,根本问题是 .settings 文件夹中的文件冲突。因此,删除 .settings 文件夹可以解决 Maven 错误,但我想保留一些本地配置文件。我解决了冲突,然后再次尝试了 Maven 更新,它成功了。
我遇到了同样的症状,上面的解决方案都没有帮助。我终于通过再次将ear项目导入eclipse得到了问题的堆栈跟踪,并且能够将其追溯到试图删除Windows临时目录中名为“ .mavenDeploymentDescriptorManagement”,这会导致 java.io.File.exists() 方法出现不合理的 NullPointerException,特别是因为代码已经在先前的方法中使用相同的变量成功地完成了相同的事情,然后调用 file.isFile() 而没有问题。
在文件系统上检查这一点表明,该文件只能以管理员权限访问。显然,我在某个时候错误地从管理员控制台启动了 eclipse。最后,我只是让隐藏文件在 Windows 资源管理器中可见,并手动删除了临时文件,从而解决了问题。
我不得不重新安装 eclipse,删除 .m2 文件夹并重建 jars。
只是问题的另一个可能来源!
我发现在我的情况下是以下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>
我有同样的问题......最后的解决方案!
这里是日食日志:
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 ...
解决方案: 屏幕截图上的红色 ;-)
在我的情况下,问题是其他依赖项使用的派生依赖项的冲突,并且其中一些派生依赖项版本不可用,可能是因为我忘记执行某些部署,因为使用工作区解析一切正常,但是在移动时到其他环境都突然崩溃了。而且我也在使用版本范围
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
我尝试了以上所有方法,但没有任何效果,所以...
解决方案:在所有依赖项中使用 LATEST 作为版本,因此 maven 不需要解析范围内的所有依赖项,必须小心使用,因为如果您错过部署其中一个依赖项,则构建将失败
如果您使用自己的依赖项,我建议您使用 LATEST,否则在某些第三方未来版本中,您可能会发现一些编译或运行时错误
删除本地 Maven 存储库对我有帮助
避免删除 .metadata 文件夹,因为它会清理所有设置、运行配置。相反,重命名 .metadata 文件夹 --> 重启 eclipse --> 导入项目