Spring Boot GS:ConnectionFactory的ComponentScan和ClassNotFoundException

Tyl*_*er 24 maven spring-boot

我正在玩Spring Boot入门指南但是自动配置失败了,我得到:

 java.lang.ClassNotFoundException: javax.jms.ConnectionFactory
Run Code Online (Sandbox Code Playgroud)

这似乎是由于Application类的位置.它应该放在哪里?在顶级包(src/main/java)或特定包中?

And*_*son 78

您的Application类应放在特定的包中,而不是默认(顶级)包中.例如,将其放入com.example并将所有应用程序代码放在此包或子包中,如com.example.foocom.example.bar.

将您的Application类放在默认包中,即直接放入src/main/java并不是一个好主意,它几乎肯定会导致您的应用程序无法启动.如果您这样做,您应该看到此警告:

** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.
Run Code Online (Sandbox Code Playgroud)

  • 组件扫描在主应用程序类所在的包及其所有子包中查找.如果将其放在默认包中,则会扫描类路径上的每个包.充其量,这将是浪费时间.在最坏的情况下,它会导致应用程序无法启动,因为它找到了应该找不到的组件 (2认同)

小智 5

不要将启动应用程序类放在默认包中。这样可以解决问题。

工作代码:

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

    }
}
Run Code Online (Sandbox Code Playgroud)


Edd*_*dez -1

您的配置应如下所示,并且 Application.java 应位于包的根目录 例如 /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>
Run Code Online (Sandbox Code Playgroud)