Файл Yaml не найден при импорте приложений SpringBoot из Eclipse в IntelliJ

Я хочу попробовать IntelliJ
Моя установка Eclipse IDE настроена с использованием рабочей области CoandaAirlines.

В этом рабочем пространстве у меня есть coanda-airlines, который представляет собой проект с несколькими модулями Maven, 2 из этих модулей являются приложениями весенней загрузки: coandaairlines-config-provider и coandaairlines-backend.

coanda-airlines использует в качестве зависимости еще два проекта maven: davinci-framework и Toolbox.

поэтому в основном мой проводник проекта eclipse выглядит так:

чтобы повторить это на IntelliJ, я следовал некоторому руководству. Я создал папку CoandaAirlinesWorkspace и открыл ее как проект, затем импортировал проекты maven как модули, и теперь рабочая область проекта выглядит так:

Теперь я пытался запустить приложение весенней загрузки, на Eclipse у меня есть конфигурация запуска:

и работает как положено:

Я создал аналогичный на IntelliJ.

но когда я нажимаю кнопку «Выполнить», происходит ошибка, потому что он не находит файл для Spring.config.import

[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)

Я попробовал заменить:

--spring.config.import=config/application-config-provider--local.yaml

с

-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

Этот вопрос не для этого сайта. См. stackoverflow.com/help/on-topic

Alex 08.06.2024 16:53

пожалуйста, опубликуйте фактическую трассировку стека ошибки - на приведенном снимке экрана почти ничего не видно

J Asgarov 08.06.2024 17:47

это всего лишь предположение, но я думаю, что проблема может заключаться в том, что вы пытались импортировать несколько проектов в один и тот же проект. Поэтому конфигурация запуска ищет базовый каталог application-config-provider--local.yaml underl вместо текущего каталога проектов. чтобы проверить это, попробуйте использовать абсолютный путь к файлу yaml и после подтверждения просто добавьте рабочий каталог в конфигурацию запуска (под Modify Options).

J Asgarov 08.06.2024 19:56

Рабочий каталог @JAsgarov в конфигурации запуска решил проблему! Пожалуйста, дайте ответ, чтобы я мог его принять! Большое спасибо!

Paul Marcelin Bejan 09.06.2024 11:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
4
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это довольно распространенная проблема при использовании нескольких проектов в Intellij, и я не уверен, почему они не могут ее исправить:

При наличии нескольких проектов Intellij по-прежнему рассматривает верхнюю папку как baseDir, и все конфигурации запуска ищут относительные пути, начиная с baseDir (а не так, как мы, пользователи, ожидаем, от каталога проекта).

Это можно исправить:

  • захожу в Run Configurations
  • Выбираем Modify Options
  • Выбираем Working Directory
  • Укажите нужный вам рабочий каталог (или вы также можете использовать переменную intellij $MODULE_WORKING_DIR$)

спасибо за предложение $MODULE_WORKING_DIR$

Paul Marcelin Bejan 09.06.2024 20:46

Другие вопросы по теме