java - 在 org.springframework.data.mongodb.core.convert.DefaultDbRefResolver.<c linit>(DefaultDbRefResolver.java :57)

标签 java maven nullpointerexception spring-data-mongodb

由于我一直在寻找这个异常的答案,但没有在任何地方找到它,所以我将把这篇文章留在这里以供将来引用。因此,如果其他人遇到此问题,欢迎您。

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

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

最佳答案

答案:

错误在这里:https://github.com/spring-projects/spring-data-mongodb/blob/master/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultDbRefResolver.java 在这一行中:

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/

相关文章:

java - 如何for循环某种模式?

java - 使用 cucumber-java 时如何组织步骤定义?

java - 无法使用 dropwizard-core 类

java - 如何从另一个类调用 Activity 中的方法

Java:简单但不寻常的 NullPointerException

java - onActivityCreated/onStart/onViewCreated 方法中的 getView() 出现 NullPointerException 警告

java - 迭代目录中的大量文件

java - ArrayList 的 removeRange 方法如何工作?

java - war 专家中没有类(class)

java - 如何确定一个 bom 在 Maven 中的依赖(导入)位置?