从Eclipse导入SpringBoot项目到IntelliJ时Yaml配置文件找不到
问题描述
- 从Eclipse迁移至IntelliJ,原Eclipse工作区为CoandaAirlines,包含多模块Maven项目
coanda-airlines(内含coandaairlines-config-provider、coandaairlines-backend两个Spring Boot应用),同时依赖davinci-framework和toolbox两个Maven项目。 - 在IntelliJ中创建
CoandaAirlinesWorkspace作为项目根目录,导入上述模块并配置与Eclipse一致的启动参数后,出现两类错误:
错误1:配置文件找不到
使用命令行参数启动时:
--spring.config.import=config/application-config-provider--local.yaml
报错信息:
[INFO] [INFO] --- exec:3.3.0:exec (default-cli) @ coandaairlinesreservationsystem-config-provider --- 18:29:50.438 [main] ERROR org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter - *************************** APPLICATION FAILED TO START *************************** Description: Config data resource 'file [config/application-config-provider--local.yaml]' via location 'config/application-config-provider--local.yaml' does not exist Action: Check that the value 'config/application-config-provider--local.yaml' is correct, or prefix it with 'optional:' [ERROR] Command execution failed. org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:355) at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:253) at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:884) at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:844) at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:450) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103) at java.lang.reflect.Method.invoke (Method.java:580) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348) at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
错误2:占位符无法解析
改为JVM参数启动时:
-Dspring.config.import=config/application-config-provider--local.yaml
报错信息:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}" at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180) ~[spring-core-6.1.4.jar:6.1.4] at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126) ~[spring-core-6.1.4.jar:6.1.4] at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239) ~[spring-core-6.1.4.jar:6.1.4] at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210) ~[spring-core-6.1.4.jar:6.1.4] at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:200) ~[spring-context-6.1.4.jar:6.1.4] at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:921) ~[spring-beans-6.1.4.jar:6.1.4] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1374) ~[spring-beans-6.1.4.jar:6.1.4] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) ~[spring-beans-6.1.4.jar:6.1.4] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:784) ~[spring-beans-6.1.4.jar:6.1.4] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:767) ~[spring-beans-6.1.4.jar:6.1.4] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) ~[spring-beans-6.1.4.jar:6.1.4] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:508) ~[spring-beans-6.1.4.jar:6.1.4] ... 17 more
解决方案
修正工作目录配置
IntelliJ默认工作目录是Workspace根目录(CoandaAirlinesWorkspace),而Eclipse默认是项目根目录(coanda-airlines)。在启动配置中:- 打开Run/Debug Configurations
- 选中对应的Spring Boot启动项
- 在
Working directory中选择$MODULE_DIR$(即coandaairlines-config-provider模块的根目录,或配置文件所在的父目录) - 保存后重新启动
正确使用参数类型
--spring.config.import是Spring Boot命令行参数,应配置在Program arguments中,而非VM options。保持参数格式为:--spring.config.import=config/application-config-provider--local.yaml验证配置文件完整性
检查application-config-provider--local.yaml中是否包含spring.application.name配置项,或确保基础配置文件(如application.yaml)已被正确加载,保证占位符能被解析。重新同步Maven依赖
- 执行
mvn clean install编译所有模块,确保依赖无缺失 - 在IntelliJ中右键项目 → Maven → Reload Project,刷新依赖和配置识别
- 执行
内容的提问来源于stack exchange,提问作者Paul Marcelin Bejan
相关产品推荐
相关产品推荐

