Java 保存基本实体时Morphia引发内部异常

Java 保存基本实体时Morphia引发内部异常,java,mongodb,morphia,Java,Mongodb,Morphia,我一直在努力拯救一个和莫菲娅在一起的波乔,但运气不好。我有以下代码,很简单: final Morphia morphia = new Morphia(); morphia.mapPackage("entities.users"); final Datastore datastore = morphia.createDatastore(new MongoClient(), "test_table"); datastore.ensureIndexes(); datastore.save(user

我一直在努力拯救一个和莫菲娅在一起的波乔,但运气不好。我有以下代码,很简单:

final Morphia morphia = new Morphia();

morphia.mapPackage("entities.users");

final Datastore datastore = morphia.createDatastore(new MongoClient(), "test_table");
datastore.ensureIndexes();
datastore.save(user);
然而,奇怪的是,
datastore.ensureIndex()
抛出了一个奇怪的内部异常,该异常取决于Morphia:

WARNING: Parameterized types are treated as untyped Objects. See field 'assertionLock' on class java.lang.ClassLoader
org.mongodb.morphia.mapping.MappingException: Cannot use non-static inner class: class java.security.ProtectionDomain$Key. Please make static.
    at org.mongodb.morphia.mapping.MappedClass.basicValidate(MappedClass.java:495)
    at org.mongodb.morphia.mapping.MappedClass.<init>(MappedClass.java:123)
    at org.mongodb.morphia.mapping.Mapper.getMappedClass(Mapper.java:451)
    at org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1185)
    at org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1185)
    at org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1185)
    at org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1185)
    at org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1185)
    at org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1185)
    at org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1185)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1167)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:1189)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:274)
    at org.mongodb.morphia.DatastoreImpl.ensureIndexes(DatastoreImpl.java:266)
    at repositories.UsersRepository.createUser(UsersRepository.java:65)
    at repositories.UsersRepository.main(UsersRepository.java:101)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Process finished with exit code 0
警告:参数化类型被视为非类型化对象。请参阅类java.lang.ClassLoader上的字段“assertionLock”
org.mongodb.morphia.mapping.MappingException:无法使用非静态内部类:class java.security.ProtectionDomain$Key。请做静电检查。
位于org.mongodb.morphia.mapping.MappedClass.basicValidate(MappedClass.java:495)
位于org.mongodb.morphia.mapping.MappedClass。(MappedClass.java:123)
位于org.mongodb.morphia.mapping.Mapper.getMappedClass(Mapper.java:451)
位于org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1185)
位于org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1185)
位于org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1185)
位于org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1185)
位于org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1185)
位于org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1185)
位于org.mongodb.morphia.DatastoreImpl.processEmbeddedAnnotations(DatastoreImpl.java:1545)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1185)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1167)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:1189)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:274)
位于org.mongodb.morphia.DatastoreImpl.ensureIndex(DatastoreImpl.java:266)
位于repositories.UsersRepository.createUser(UsersRepository.java:65)
位于repositories.UsersRepository.main(UsersRepository.java:101)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
进程已完成,退出代码为0

在某种程度上,您正在尝试序列化一个
java.security.ProtectionDomain$Key
实例,而Morphia和驱动程序都不知道如何序列化该实例。您需要编写一个
转换器来管理该类型。

在某种程度上,您正在尝试序列化一个
java.security.ProtectionDomain$Key
实例,Morphia和驱动程序都不知道该如何做。您需要编写一个
转换器来管理该类型