在以这种方式反序列化类时,我在 OSGi 环境中使用 Jackson 2.1 时遇到了一些麻烦:
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("user.json"), User.class);
class User {
public Class clazz = org.example.MyClass.class;
}
因为 Jackson 与我想要反序列化的自定义类位于不同的包中,所以我经常得到一个java.lang.ClassNotFoundException
- 通常在 MyClass1 或 MyClass2 上。
我将其追溯到com.fasterxml.jackson.databind.util.ClassUtil
用于Class.forName(..)
检索用于反序列化的类的类。由于 OSGI 上的类加载器不同,它只能看到 JRE 和 Jackson 的类,但看不到我的自定义类。
有没有一种简单的方法可以让杰克逊找到所有需要的自定义类(我有几十个),例如通过添加一个类加载器?