我想在我的webapp中读取放置在resources/data/info.json
中的json文件。知道需要使用Convertor.class.getResourceAsStream("\\WEB-INF\\classes\\data\\Address.json");
其中Convertor是我的util类由于某种原因无法读取文件,我看到InputStream
返回null并且我看到以下异常:
com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: UNKNOWN; line: 1, column: 0]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4133)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3988)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3058)
at com.wf.hrca.util.Convertor.unMarshal(Convertor.java:84)
答案 0 :(得分:0)
resources
是开发计算机上源项目的文件夹。 Tomcat并不关心源项目的外观。顺便说一句,当您将应用程序部署到生产环境中时,机器上不会有任何源项目。
所有Tomcat关心的都是您部署的war文件。在这个war文件中,WEB-INF / classes目录以及WEB-INF / lib下的所有jar文件构成了应用程序的类路径。
Convertor.class.getResourceAsStream()
,正如javadoc所解释的那样(但你真的需要阅读它才知道)需要一个/
- 分隔的路径。如果路径以/
开头,那么路径从类路径的一个根开始(即/
引用WEB-INF / classes,以及WEB的每个jar文件的根目录 - INF / lib目录)。
因此,找到war文件中json文件的位置。如果它在/WEB-INF/classes/data/info.json
下,那么您应该使用
Convertor.class.getResourceAsStream("/data/info.json");