«Ресурс пути к классу [config / game.properties] не может быть открыт, потому что он не существует» IntelliJ - Spring проект не ищет в правильном каталоге? - PullRequest
1 голос
/ 02 марта 2020

Я делаю Java проект Spring в IntelliJ в качестве упражнения, и я не понимаю, какая у меня ошибка конфигурации файла.

Пожалуйста, посмотрите макет каталога моего проекта, как описано в этом снимок экрана: enter image description here

Три наиболее важных файла здесь - это классы Main и GameConfig и файл game.properties. Или, чтобы использовать их полные имена каталогов пакетов, "console/src/main/java/academy.learnprogramming.console.Main", "core/src/main/java/academy.learnprogramming.config.GameConfig" и core/src.resources.config.game.properties

Когда я запускаю проект, класс Main пытается запустить следующий код:

    package academy.learnprogramming.console;

    import academy.learnprogramming.MessageGenerator;
    import academy.learnprogramming.NumberGenerator;
    import academy.learnprogramming.config.GameConfig;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.ConfigurableApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;

    public class Main {

        private static final Logger log = LoggerFactory.getLogger(com.sun.tools.javac.Main.class);

        public static void main(String[] args) {
            log.info("Guess the number");
            //== create the context first ==
            ConfigurableApplicationContext context
            = new AnnotationConfigApplicationContext(GameConfig.class);
            // rest of code, which we never get to because of an error with the above line

Когда я пытаюсь создать ConfigurableApplicationContext, я пытаюсь вызвать класс GameConfig из пакета Core. Но вместо этого я получаю эту ошибку времени выполнения:

Исключение в потоке "main" org.springframework.beans.factory.BeanDefinitionStoreException: не удалось проанализировать класс конфигурации [academy.learnprogramming.config.GameConfig]; вложенное исключение java .io.FileNotFoundException: ресурс пути к классу [config / game.properties] не может быть открыт, потому что он не существует

Я не понимаю, почему он думает, что GameConfig не существует, или как это исправить. Похоже, ни одно из найденных решений не дает точного ответа на этот вопрос. Я получил сравнение конфигурации от кого-то, чей код идентичен моему, но никто из нас не понимает, почему их версия работает, а моя нет.

Для сравнения, класс GameConfig имеет следующий код:

    package academy.learnprogramming.config;

    import academy.learnprogramming.GuessCount;
    import academy.learnprogramming.MaxNumber;
    import academy.learnprogramming.MinNumber;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;

    @Configuration
    @ComponentScan(basePackages = "academy.learnprogramming")
    @PropertySource("classpath:config/game.properties")
    public class GameConfig {
    //rest of GameConfig code here...

Хотя game.properties так прост:

    game.maxNumber = 100
    game.guessCount = 10
    game.minNumber = 0

Я не могу найти вопрос, похожий на этот, и другие веб-сайты не указывают, что происходит. У кого-нибудь есть идеи, почему эта ошибка может происходить? Любой совет будет неоценим

...