quarkus - 如何读取 Quarkus 原生镜像中的类路径资源?
问题描述
我已经使用将资源添加到类路径
<additionalBuildArg>-H:IncludeResources=.*/kubernetes_auth.crt$</additionalBuildArg>
<additionalBuildArg>-H:Log=registerResource:verbose</additionalBuildArg>
当我构建图像时,我可以在日志中看到如果我添加它
ResourcesFeature: registerResource: classes/kubernetes_auth.crt
但是当我尝试使用以下适用于 Java 的代码读取资源时,它返回 null
InputStream is = KubernetesResource.class.getResourceAsStream("/kubernetes_auth.crt");
我已经尝试过使用这些变体,但同样返回 null
Thread.currentThread().getContextClassLoader().getResourceAsStream("/kubernetes_auth.crt");
ClassLoader.getSystemClassLoader().getResourceAsStream("/kubernetes_auth.crt");
getClass().getResourceAsStream("classes/kubernetes_auth.crt");
quarkus 0.13.3 和 0.14.0 以及 Graal rc14、rc15、rc16 的版本
解决方案
正如您所发现的,您需要指定要加载的资源。
从 Quarkus 1.8.0 开始(以及之前的一段时间),您可以使用属性列出应该可用于本机映像加载的资源:
quarkus.native.resources.includes=kubernetes_auth.crt
该属性支持以逗号分隔的文件列表。此列表的语法在构建本机映像的配置参考中进行了描述:https ://quarkus.io/guides/building-native-image#configuration-reference
推荐阅读
- r - 如何在数据框中以一定长度将列中的数字拆分为两列
- pandas - 绘制来自 Alpha Vantage 的熊猫数据
- javascript - ReactJS:iOS 设备中的 HTML5 Canvas 渲染错误(>= iPhone 8)
- sql - SQL Server 错误:用户登录失败 -- 在迁移命令更新数据库中
- php - 如何在php中获得具有不同键但相同值的两个多维数组的差异?
- python - 当前路径与其中任何一个都不匹配
- reactjs - 如何更改反应表列中的反应工具提示数据提示值?
- jquery - 如何在 AgendaWeek / AgendaDay 视图中选择全日历时间行?
- python - 如何使用python中的数值范围从excel文件中提取一组特定的值?
- sql - 提取字符前后的数字