[英]@PropertySource in a Jar for an external file on the classpath
[英]How to load classpath @PropertySource inside a jar?
@PropertySource(value = "classpath:config.yaml", factory = TypesafeAdapterPropertySourceFactory.class)
我的问题:运行 jar 时,由于 jar 中的路径不可用,找不到该文件。 更多信息:
线程“主”org.springframework.beans.factory.BeanDefinitionStoreException 中的异常:无法解析配置 class [com.viber.httpmsexample.Application]; nested exception is java.io.FileNotFoundException: class path resource [config.yaml] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/C:/Repositories/http-ms-example/ target/app.jar./config.yaml at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser:java.189) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor:java.331) at org .springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor:java.247) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBe anDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate:java.311) at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate:java.112) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext:java.746) at org.springframework .context.support.AbstractApplicationContext.refresh(AbstractApplicationContext:java.564) at org.springframework.context.annotation.AnnotationConfigApplicationContext.(AnnotationConfigApplicationContext:java.93) at com.mytest.httpmsexample.Application.main(Application:java:63)造成的。 java.io:FileNotFoundException。 class 路径资源 [config:yaml] 无法解析为绝对文件路径,因为它不驻留在文件系统中:jar:file:/C./Repositories/http-ms-example/target/app.Z68995FCBF434492D150.D48/ yaml at org.springframework.util.ResourceUtils:getFile(ResourceUtils.java.217) at org.springframework.core.io.AbstractFileResolvingResource:getFile(AbstractFileResolvingResource.java.162) at com.mytest.libraries.anticorruption.config.TypesafeAdapterPropertySourceFactory: createPropertySource(TypesafeAdapterPropertySourceFactory.java.14) at org.springframework.context.annotation.ConfigurationClassParser:processPropertySource(ConfigurationClassParser.java.463) at org.conf.conf gurationClassParser:doProcessConfigurationClass(ConfigurationClassParser.java.280) at org.springframework.context.annotation.ConfigurationClassParser:processConfigurationClass(ConfigurationClassParser.java.250) at org.springframework.context.annotation.ConfigurationClassParser:parse(ConfigurationClassParser.java.199) at org .springframework.context.annotation.ConfigurationClassParser:doProcessConfigurationClass(ConfigurationClassParser.java.304) at org.springframework.context.annotation.ConfigurationClassParser:processConfigurationClass(ConfigurationClassParser.java.250) at org.springframework.context.annotation.ConfigurationClassParser:parse(ConfigurationClassParser .java.207) 在 org.springframework.context.annotation.ConfigurationClassParser:parse(ConfigurationClassParser.java.17 5)... 8 更多
我可以将此配置外部化,但我希望暂时保留它。 有可能克服这个问题吗?
谢谢!
问题是您自己的TypesafeAdapterPropertySourceFactory
尝试基于File
创建属性源,当文件位于 jar 中时该文件不起作用。 java 意义上的文件是文件系统上的物理文件,存档内的文件不是。
我强烈建议使用ResourcePropertySource
来创建属性源并装饰它而不是其他东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.