由于我一直在寻找这个异常的答案,但没有在任何地方找到它,所以我将把这篇文章留在这里以供将来引用。因此,如果其他人遇到此问题,欢迎您。
我正在使用 maven shade 插件
与 org.springframework.data:spring-data-mongodb:1.4.0.RELEASE
创建一个可运行的 jar/p>
在创建 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):
package org.springframework.core;
/**
* for spring data mongodb
* it can't determine the springversion in the shaded jar
*/
public class SpringVersion {
public static String getVersion() {
return "4.0.2-RELEASE";
}
}
该类将覆盖原始 SpringVersion
类文件。
关于java - 在 org.springframework.data.mongodb.core.convert.DefaultDbRefResolver.<c linit>(DefaultDbRefResolver.java :57),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201136/