【发布时间】:2020-08-12 03:07:06
【问题描述】:
所以从长远来看,我正在尝试用 Java 为我的顶点项目编写一个提醒应用程序。现在我正在尝试将一些代码写入 json 文件,以便我可以保存信息,但我遇到了这个异常。我将 jar 文件导入到我的项目中,所以我不确定为什么它似乎无法访问它。我能做些什么来解决这个问题吗?
Heres my java build path for the project. 我正在使用 eclipse,由于某种原因它有这个模块路径和类路径。我不知道两者之间的区别,但是如果我将 jar 放在模块路径中,它就会出错。
package util;
import java.io.IOException;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public class JsonUtil {
private static ObjectMapper mapper;
static {
mapper = new ObjectMapper();
}
public static String convertJavaToJson(Object object)
{
String jsonResult = "";
try {
jsonResult = mapper.writeValueAsString(object);
}
catch (JsonGenerationException e) {
System.out.println("1 Exception Occured while converting Java Object into Json -->" + e.getMessage());
}
catch (JsonMappingException e) {
System.out.println("2 Exception Occured while converting Java Object into Json -->" + e.getMessage());
}
catch (IOException e) {
System.out.println("3 Exception Occured while converting Java Object into Json -->" + e.getMessage());
}
catch (Exception e) {
System.out.println("4 Exception Occured while converting Java Object into Json -->" + e.getMessage());
}
return jsonResult;
}
}
异常来自最终的 catch 块
4 Exception Occured while converting Java Object into Json -->Failed to instantiate standard serializer (of type org.codehaus.jackson.map.ser.std.NullSerializer): class org.codehaus.jackson.map.ser.BasicSerializerFactory cannot access a member of class org.codehaus.jackson.map.ser.std.NullSerializer with modifiers "private"
感谢任何帮助!
【问题讨论】:
-
你尝试转换什么样的对象?
-
org.codehaus.jackson?那不是很古老的图书馆吗?我认为您应该使用的是com.fasterxml.jackson。另见org.codehaus.jackson versus com.fasterxml.jackson.core -
看看这个问题org.codehaus.jackson versus com.fasterxml.jackson.core。接下来,打开Jackson Databind » 2.11.0 并下载它的依赖项:
jackson-annotations、jackson-core。去掉旧的jars,附上这3个。最后,不过应该是刚开始,需要学习使用Maven -
感谢大家的帮助!我不知道我使用的杰克逊是旧的,但这是有道理的,因为我要关闭旧的 YT 视频。我遇到了一个新异常,但我认为它是针对我的对象(这是一个自定义类,用于使用 localdatetime 的提醒事件)