Подтвердить что ты не робот

Spring Загрузка GS: ComponentScan и ClassNotFoundException для ConnectionFactory

Я играю в руководстве по началу загрузки Spring, но автоматическая настройка не удалась, и я получаю:

 java.lang.ClassNotFoundException: javax.jms.ConnectionFactory

Кажется, это связано с расположением класса Application. Где он должен быть расположен? В пакете верхнего уровня (src/main/java) или в определенном пакете?

4b9b3361

Ответ 1

Ваш класс Application должен быть помещен в определенный пакет, а не в пакет по умолчанию (верхний уровень). Например, поместите его в com.example и поместите весь свой код приложения в этот пакет или в подпакеты, например com.example.foo и com.example.bar.

Размещение вашего класса Application в пакете по умолчанию, т.е. непосредственно в src/main/java, не является хорошей идеей, и это почти наверняка приведет к тому, что ваше приложение не сработает. Если вы это сделаете, вы должны увидеть это предупреждение:

** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.

Ответ 2

Не помещайте класс приложения для загрузки в пакет по умолчанию. Это решит проблему.

Рабочий код:

package com.spring.boot.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);         

    }
}

Ответ 3

Вам нужен основной класс для внутри пакета. Поскольку Spring загрузочная аннотация @SpringBootApplication будет искать пакет для сканирования при запуске приложения.

Итак, убедитесь, что над вашим основным файлом класса есть оператор пакета. Что это.

Ответ 4

У меня была та же проблема, Вскоре я понял, что не включил мой основной метод в пакет. После включения основного внутри пакета spring загрузка выполняется без сбоев.

Пример программы (Basic) -

package springbootquickstart;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class application {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SpringApplication.run(application.class, args);

    }

}

Ответ 5

Ваша конфигурация должна выглядеть так, а Application.java должна быть в корне ваших пакетов. E.g/src/main/java/io/eddumelendez

io.eddumelendez - это мой пакет

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.1.RELEASE</version>
    <relativePath />
  </parent>
  <groupId>io.eddumelendez.jms</groupId>
  <artifactId>spring-boot-jms-sample</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>qa</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-broker</artifactId>
    </dependency>        
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>