在tomcat war中访问JSON文件并读取它

问题描述 投票:0回答:1

我想在我的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)
spring-mvc
1个回答
0
投票

resources是开发计算机上源项目的文件夹。 Tomcat不关心源项目的外观。顺便说一句,当您在生产中部署应用程序时,机器上将不会有任何源项目。

所有Tomcat关心的都是你部署的war文件。在这个war文件中,WEB-INF / classes目录以及WEB-INF / lib下的所有jar文件构成了应用程序的类路径。

Convertor.class.getResourceAsStream(),正如javadoc所解释的那样(但你真的需要阅读它才知道)预计会有一个/分离的路径。如果路径以/开头,那么路径从类路径的一个根开始(即/指向WEB-INF /类,并且指向WEB-INF / lib的每个jar文件的根)。

因此,找到war文件中json文件的位置。如果它在/WEB-INF/classes/data/info.json下,那么你应该使用

Convertor.class.getResourceAsStream("/data/info.json");
© www.soinside.com 2019 - 2024. All rights reserved.