我得到一个java.lang.runtimeexception:
java.util.MissingFormatArgumentException: Format specifier '%s' error in Java below is my stacktrace:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transformToListClass': Invocation of init method failed; nested exception is java.lang.RuntimeException: java.util.MissingFormatArgumentException: Format specifier '%s'
Caused by: java.lang.RuntimeException: java.util.MissingFormatArgumentException: Format specifier '%s'
Caused by: java.util.MissingFormatArgumentException: Format specifier '%s'
我正在传递以下json文件:
{
"EcrionIntegration": {
"HelloWord": "Hello World"
}
}
使用以下方法:
@PostConstruct
public ResponseEntity<InputStreamResource> tranform() {
try {
JSONParser parser = new JSONParser();
//Use JSONObject for simple JSON and JSONArray for array of JSON.
JSONObject data = (JSONObject) parser.parse(new FileReader("C:\\Liver\\code\\HELLO_WORLD.json"));//path to the JSON file.
String payLoad = data.toString();
ImageDescriptor descriptor = ecrionService.generateImage(payLoad, "HELLO_WORLD");
log.info(String.format("%s generateImage Result: [%s] ", descriptor.getFileName(), descriptor.getFileUrl()));
System.out.print(descriptor.getFileName() + " " + descriptor.getFileUrl());
String fileName = "ecrionlList.PDF";
log.info(String.format("file name:", fileName));
System.out.print("file name:" + fileName);
descriptor.setFileName(fileName);
InputStreamResource streamResource = new InputStreamResource(descriptor.getInputStream());
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(MediaType.APPLICATION_PDF_VALUE))
.body(streamResource);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}
它依次传递给以下方法并发送到服务器:
public ImageDescriptor generateImage(String payLoad, String templateName) {
try {
ImageDescriptor descriptor = new ImageDescriptor();
String myEcrionUrl = "http://localhost:8013/v1/ecrion";
String ecrionURL = myEcrionUrl.concat(Constant.F_SLASH).concat(templateName);
log.info("payload" + payLoad);
ResponseEntity<Resource> responseEntity = restTemplate.exchange(
ecrionURL,
HttpMethod.POST,
ncbiService.getStringHttpEntityWithPayload(payLoad),
Resource.class);
log.info(String.format("%s generateImage Result: [%s] ", responseEntity.getBody().getInputStream()));
descriptor.setInputStream(Objects.requireNonNull(responseEntity.getBody()).getInputStream());
convert(responseEntity.getBody().getInputStream(), "sherrr.pdf");
log.info("file is:"+ convert(responseEntity.getBody().getInputStream(), "sherrr.pdf"));
return descriptor;
} catch (IOException e) {
e.printStackTrace();
log.error(" generate image failed " + e.getMessage());
throw new RuntimeException(e);
}
}
2条答案
按热度按时间toiithl61#
此格式有两个%s,但您只传递了一个参数。
hc2pp10m2#
正如您在文档string.format中看到的,它接受format string和vararg或参数。如果您查看格式化程序字符串文档,您可以在
%
有一堆参数可以用来格式化字符串。尤其是对于%s
上面写着所以您得到的错误是因为您告诉格式化程序字符串将格式化2个参数,而您只传递了其中一个
所以你可以去掉第一个
%s
: