java – 使用ResourceUtils.getFile从Heroku环境中的类路径中读取文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用ResourceUtils.getFile从Heroku环境中的类路径中读取文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1392字,纯文字阅读大概需要2分钟。
内容图文
![java – 使用ResourceUtils.getFile从Heroku环境中的类路径中读取文件](/upload/InfoBanner/zyjiaocheng/822/85a37ba4d5e54d1fab3689261fd9c500.jpg)
我在Heroku中运行Spring Boot应用程序,使用Maven来管理构建生命周期.
在我的应用程序的初始化阶段,我想读取打包到我的JAR文件中的文件.
为了设法获取文件的内容我正在使用Spring实用程序类ResourceUtils,并且我使用特殊前缀classpath表示文件的路径:
我正在使用的代码如下所示:
String pathToMyFile = "classpath:com/myapp/myFile.test"
List<String> fileLines = Files.readLines(ResourceUtils.getFile(pathToMyFile), IOConstants.DEFAULT_CHARSET_TYPE);
当我在本地计算机中执行应用程序时,此代码按预期工作.
但是,当我将我的应用程序推送到Heroku时,我收到以下错误:
Caused by: java.io.FileNotFoundException: class path resource [com/myapp/myFile.test]
cannot be resolved to absolute file path because it does not reside in the
file system: jar:file:/app/target/myapp.jar!/com/myapp/myFile.test
我运行了一个heroku运行bash,我已经检查过该文件应该在哪里(在jar中).
而且,根据错误跟踪,Spring定位文件,因为它将路径从classpath:com / myapp / myFile.test转换为jar:file:/app/target/myapp.jar!/com/myapp/myFile.test
解决方法:
我怀疑当你在本地运行时,它正在从分解的JAR文件(即文件系统上的常规文件)中获取类路径上的文件.
在Heroku上,它位于JAR文件中,这意味着它不是常规文件,必须作为输入流读取,它可能如下所示:
ClassLoader cl = this.getClass().getClassLoader();
InputStream inputStream = cl.getResourceAsStream(pathToMyFile);
然后你可以使用BufferedReader来准备线路.但也许ResourceUtils有更好的方法.
您可以通过运行Procfile中的相同命令在本地重现问题.
内容总结
以上是互联网集市为您收集整理的java – 使用ResourceUtils.getFile从Heroku环境中的类路径中读取文件全部内容,希望文章能够帮你解决java – 使用ResourceUtils.getFile从Heroku环境中的类路径中读取文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。