org.springframework.data.mongodb.core.convert.DefaultDbRefResolver上的Nullpointerexception;c linit>;(DefaultDbRefResolver.java:57)

org.springframework.data.mongodb.core.convert.DefaultDbRefResolver上的Nullpointerexception;c linit>;(DefaultDbRefResolver.java:57),java,maven,nullpointerexception,spring-data-mongodb,Java,Maven,Nullpointerexception,Spring Data Mongodb,由于我一直在寻找这个例外的答案,但在任何地方都找不到,我将把这篇文章留在这里以供将来参考。所以如果其他人遇到这个问题,欢迎你 我正在使用maven shade插件与org.springframework.data:spring-data-mongodb:1.4.0.RELEASE一起创建一个可运行的jar 在创建jar并使用java-jar Foo-0.0.1-SNAPSHOT.jar运行它之后,我在标题中遇到了异常,答案是: 错误在这里: 在这方面: private static final

由于我一直在寻找这个例外的答案,但在任何地方都找不到,我将把这篇文章留在这里以供将来参考。所以如果其他人遇到这个问题,欢迎你

我正在使用
maven shade插件
org.springframework.data:spring-data-mongodb:1.4.0.RELEASE一起创建一个可运行的jar

在创建jar并使用
java-jar Foo-0.0.1-SNAPSHOT.jar运行它之后,我在标题中遇到了异常,答案是:

错误在这里: 在这方面:

private static final boolean IS_SPRING_4_OR_BETTER = SpringVersion.getVersion().startsWith("4");
SpringVersion.getVersion
如果无法从包中检索版本号,则返回null。由于依赖项是在着色jar中提取的,因此没有从中检索版本号的包。startsWith(“4”)
抛出一个
NullPointerException

要解决这个问题(这是一种快速而肮脏的解决方案,但它很有效),请在源文件夹中创建一个包
org.springframework.core
,并创建以下类(我在版本4.0.2-RELEASE中使用springframework):


该类将覆盖原始的
SpringVersion
类文件。

就像他在回答中提到的@mininme一样,问题出现在
4.0.2中。由于

SpringVersion.getVersion().startsWith("4").

现在,这意味着,如果您有这样的问题,您可能应该尝试更新版本的Spring。在版本
4.3.0中,Spring的发行版
不再存在此类问题

非常感谢您的解决方案。逻辑取决于软件包版本号,这太愚蠢了!感谢分享此解决方案,拯救了我的一天!
SpringVersion.getVersion().startsWith("4").