You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle构建Graal原生镜像时OpenCSV资源包缺失问题求助

问题

使用OpenCSV向编译为Graal原生镜像的Spring服务导入数据时,解析CSV文件触发如下错误:

Exception in thread "pool-7-thread-5" java.lang.RuntimeException: java.util.MissingResourceException: Can't find bundle for base name opencsv, locale en_GR
        at com.opencsv.bean.concurrent.ProcessCsvLine.run(ProcessCsvLine.java:111)
        at java.base@21/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base@21/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base@21/java.lang.Thread.runWith(Thread.java:1596)
        at java.base@21/java.lang.Thread.run(Thread.java:1583)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211)

已参考Graal资源包处理相关文档,尝试通过Gradle的graalNativeImage任务配置包含目标资源包,但配置后问题依旧,配置代码如下:

graalvmNative {
    binaries {
        main {
            buildArgs.add('-H:IncludeResourceBundles=com.opencsv.opencsv.opencsv')
            buildArgs.add('--initialize-at-build-time=org.apache.commons.logging.LogFactoryService')
        }
    }
}
解决方案
  • 修正资源包基准名:错误日志明确指出找不到基准名为opencsv的资源包,而当前配置的com.opencsv.opencsv.opencsv是错误的。OpenCSV的资源包基准名就是opencsv,对应依赖中的opencsv.properties、opencsv_en_GR.properties等文件。修改Gradle配置:
    graalvmNative {
        binaries {
            main {
                buildArgs.add('-H:IncludeResourceBundles=opencsv')
                buildArgs.add('--initialize-at-build-time=org.apache.commons.logging.LogFactoryService')
            }
        }
    }
    
  • 确认资源文件存在:检查OpenCSV依赖包内是否包含所需的本地化资源文件,如果目标opencsv_en_GR.properties不存在,OpenCSV会 fallback 到默认的opencsv.properties,需确保该默认文件存在。
  • 补充资源路径匹配(可选):如果修正资源包名后仍无法加载,可尝试直接指定包含所有OpenCSV相关的properties文件,添加如下构建参数:
    buildArgs.add('-H:IncludeResources=".*opencsv.*\\.properties"')
    
  • 验证构建配置:构建原生镜像时,可添加-H:PrintResourceBundles参数,打印所有被纳入的资源包,确认opencsv是否在列表中,以此排查配置是否生效。

内容的提问来源于stack exchange,提问作者vkourt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:01:14