Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringDataMongo DefaultTypeMapper与不同的类加载器存在问题_Java_Spring_Mongodb_Spring Data Mongodb - Fatal编程技术网

Java SpringDataMongo DefaultTypeMapper与不同的类加载器存在问题

Java SpringDataMongo DefaultTypeMapper与不同的类加载器存在问题,java,spring,mongodb,spring-data-mongodb,Java,Spring,Mongodb,Spring Data Mongodb,当从MongoDB映射到java类时,DefaultTypeMapper出现了一些问题。当作为TestNG测试运行时,一切正常。但当我通过IntelliJ IDEA启动应用程序时,我遇到了一个例外: org.springframework.data.mapping.model.mappingInstanceException:未能实例化com.example.SomeAbstractClass 我调试了DefaultTypeMapper并在第150行中找到: boolean isMoreConc

当从MongoDB映射到java类时,DefaultTypeMapper出现了一些问题。当作为TestNG测试运行时,一切正常。但当我通过IntelliJ IDEA启动应用程序时,我遇到了一个例外:

org.springframework.data.mapping.model.mappingInstanceException:未能实例化com.example.SomeAbstractClass

我调试了DefaultTypeMapper并在第150行中找到:

boolean isMoreConcreteCustomType=rawType==null?true:rawType.isAssignableFrom(documentsTargetType)&&!等于(documentsTargetType)

表达式
rawType.isAssignableFrom(documentsTargetType)
仅当rawType类和documentsTargetType类由同一类加载器加载时才为真。我的例子中的表达式(错误地)为false,因为rawType类由RestartClassLoader加载,documentsTargetType由启动器$AppClassLoader加载。因此,
isAssignableFrom
计算结果为false,映射失败,出现上述异常

当我在Main.class中添加以下行时。。。
System.setProperty(“spring.devtools.restart.enabled”、“false”)
…一切正常

那么,这是预期的行为还是SpringDataMongo中的bug

问候,,
Sebastian

你能格式化代码吗,例外?闻起来像个bug。您是否可以提供一个可复制的示例,例如包含用于复制问题的最小代码的Github存储库?如果超级类位于jar lib中(默认情况下,devtools不会重新加载),而子类位于项目类中(重新加载),则看起来是可复制的。对于这两个类,类加载器将是不同的。使用它是可以修复的,但是在
DefaultTypeMapper\getFromCacheOrCreate