jar启动遇到的问题

1,TypeAliasesPackage失效

虽然设置了:   sqlSessionFactory.setTypeAliasesPackage("com.onloon.b2b.sdk.entity;com.onloon.b2b.sdk.query");
JAR启动的时候报错:XML中CurrencyDO类找不到!

 

 

   解决:使用虚拟文件系统加载文件

sqlSessionFactory.setVfs(SpringBootVFS.class);   //加在sqlSessionFactory最前面!

 

 

 

2,classpath下文件找不到

   推荐使用Thread.currentThread().getContextClassLoader().getResourceAsStream方式获取文件!

 

  ①,如果是在static代码块中使用Thread.currentThread().getContextClassLoader().getResourceAsStream方式获取文件

  ②,不是在static代码块中使用new ClassPathResource方式获取文件;

  ③,sqlSessionFactory中获取mapper*.xml使用new PathMatchingResourcePatternResolver方式获取文件,注意classpath后面有个*符号!

         比如: sqlSessionFactory.setMapperLocations(resolver.getResources("classpath*:*mapper*.xml"));

  

 

sqlSessionFactory.setMapperLocations(resolver.getResources("classpath:*mapper*.xml"));
excelTemplateFile = ResourceUtils.getFile("classpath:template/excel/quotationTemplate.xlsx");

解决:classpath后面加*

改成:
sqlSessionFactory.setMapperLocations(resolver.getResources("classpath*:*mapper*.xml"));
excelTemplateFile = ResourceUtils.getFile("classpath*:template/excel/quotationTemplate.xlsx");


参考:https://www.cnblogs.com/qiyebao/p/12467367.html
读取文件的四种方式:
①,开发环境(IDE中)和生产环境(linux部署成jar包)都可以读取到
ClassPathResource classPathResource = new ClassPathResource("excleTemplate/test.xlsx");
InputStream inputStream =classPathResource.getInputStream();
②,开发环境(IDE中)和生产环境(linux部署成jar包)都可以读取到
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("excleTemplate/test.xlsx");
③,开发环境(IDE中)和生产环境(linux部署成jar包)都可以读取到
InputStream inputStream = this.getClass().getResourceAsStream("/excleTemplate/test.xlsx");
④,开发环境 时可以读取到,生产环境读取失败。
File file = ResourceUtils.getFile("classpath:excleTemplate/test.xlsx");
InputStream inputStream = new FileInputStream(file);






 

posted @ 2022-05-27 11:31  wanhua.wu  阅读(146)  评论(0编辑  收藏  举报