Spring引导非致命错误ClassNotFoundException

Spring引导非致命错误ClassNotFoundException,spring,activemq,spring-boot,Spring,Activemq,Spring Boot,我正在尝试创建Spring引导应用程序,以便与ApacheActiveMQ协作 启动期间,我收到以下“非致命”错误: 这是我的文件: @Configuration @EnableJms public class ActiveMQTestConfig { @Bean // Strictly speaking this bean is not necessary as boot creates a default JmsListenerContainerFactory<

我正在尝试创建Spring引导应用程序,以便与ApacheActiveMQ协作

启动期间,我收到以下“非致命”错误:

这是我的文件:

@Configuration
@EnableJms
public class ActiveMQTestConfig {

    @Bean
    // Strictly speaking this bean is not necessary as boot creates a default
    JmsListenerContainerFactory<?> myJmsContainerFactory(ConnectionFactory connectionFactory) {
        SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        return factory;
    }

}

@Configuration
@ComponentScan("com.example.messages")
@SpringBootApplication
public class TestConfig {    
}

@Component
public class Receiver {

    /**
     * Get a copy of the application context
     */
    @Autowired
    ConfigurableApplicationContext context;

    /**
     * When you receive a message, print it out, then shut down the application.
     * Finally, clean up any ActiveMQ server stuff.
     */
    @JmsListener(destination = "mailbox-destination", containerFactory = "myJmsContainerFactory")
    public void receiveMessage(String message) {
        System.out.println("Received <" + message + ">");
        context.close();
        FileSystemUtils.deleteRecursively(new File("activemq-data"));
    }

}

@SpringApplicationConfiguration(classes = { TestConfig.class, ActiveMQTestConfig.class })
@RunWith(SpringJUnit4ClassRunner.class)
public class ReceiverTest {

    @Autowired
    private JmsTemplate jmsTemplate;

    @Test
    public void testReceiver() {
        // Clean out any ActiveMQ data from a previous run
        FileSystemUtils.deleteRecursively(new File("activemq-data"));

        // Send a message
        MessageCreator messageCreator = new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage("ping!");
            }
        };

        System.out.println("Sending a new message.");
        jmsTemplate.send("mailbox-destination", messageCreator);

    }

}
@配置
@使能JMS
公共类ActiveMQTestConfig{
@豆子
//严格来说,这个bean不是必需的,因为引导创建了一个默认值
JmsListenerContainerFactory myJmsContainerFactory(连接工厂连接工厂){
SimpleJMListenerContainerFactory=新SimpleJMListenerContainerFactory();
工厂。设置连接工厂(连接工厂);
返回工厂;
}
}
@配置
@组件扫描(“com.example.messages”)
@SpringBoot应用程序
公共类TestConfig{
}
@组成部分
公共类接收器{
/**
*获取应用程序上下文的副本
*/
@自动连线
可配置的应用程序上下文上下文;
/**
*收到消息后,打印出来,然后关闭应用程序。
*最后,清理所有ActiveMQ服务器内容。
*/
@JmsListener(destination=“mailbox destination”,containerFactory=“myJmsContainerFactory”)
公共无效接收消息(字符串消息){
系统输出打印项次(“收到”);
context.close();
递归删除(新文件(“activemq数据”);
}
}
@SpringApplicationConfiguration(类={TestConfig.class,ActiveMQTestConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
公共类破产管理人测试{
@自动连线
私有JmsTemplate JmsTemplate;
@试验
public void testReceiver(){
//从上一次运行中清除所有ActiveMQ数据
递归删除(新文件(“activemq数据”);
//发送消息
MessageCreator MessageCreator=newmessagecreator(){
@凌驾
公共消息createMessage(会话)引发JMSExException{
返回会话。createTextMessage(“ping!”);
}
};
System.out.println(“发送新消息”);
发送(“邮箱目的地”,messageCreator);
}
}
日志配置-logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>

    <logger name="org.springframework" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <root level="error">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

%d{yyyy-MM-dd HH:MM:ss}[%thread]-5级别%logger{36}-%msg%n
来自父pom的依赖项配置:

<!-- jUnit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
</dependency>

<!-- Aspectj -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>${aspectj.version}</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>${aspectj.version}</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjtools</artifactId>
    <version>${aspectj.version}</version>
</dependency>

<!-- Spring -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
</dependency>

<!-- Spring boot -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot</artifactId>
    <version>${spring.boot.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>${spring.boot.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    <version>${spring.boot.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>${spring.boot.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <version>${cdi-api.version}</version>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>${commons-lang3.version}</version>
</dependency>
<dependency>
    <groupId>commons-validator</groupId>
    <artifactId>commons-validator</artifactId>
    <version>${commons-validator.version}</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>${commons-io.version}</version>
</dependency>

<!-- Logging -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback.version}</version>
</dependency>

朱尼特
朱尼特
${junit.version}
测试
org.aspectj
aspectjrt
${aspectj.version}
org.aspectj
aspectjweaver
${aspectj.version}
org.aspectj
aspectjtools
${aspectj.version}
org.springframework
弹簧芯
${spring.version}
org.springframework
春豆
${spring.version}
org.springframework
春季aop
${spring.version}
org.springframework
spring上下文
${spring.version}
org.springframework
弹簧式
${spring.version}
org.springframework.boot
弹簧靴
${spring.boot.version}
org.springframework.boot
弹簧靴自动配置
${spring.boot.version}
org.springframework.boot
spring启动程序日志记录
${spring.boot.version}
org.springframework.boot
弹簧起动试验
${spring.boot.version}
测试
javax.enterprise
CDIAPI
${cdi api.version}
org.apache.commons
commons-lang3
${commons-lang3.version}
通用验证器
通用验证器
${commons validator.version}
公地io
公地io
${commons io.version}
org.slf4j
slf4j api
${slf4j.version}
回写
回归经典
${logback.version}

此项目的依赖项配置:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-broker</artifactId>
    <version>${activemq.version}</version>
</dependency>

org.springframework
SpringJMS
${spring.version}
org.apache.activemq
activemq代理
${activemq.version}

如何防止Spring Boot查找未使用的类和注释?在这个项目中我不需要任何与网络相关的东西。

包括以下依赖性

       <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>1.10.0.RELEASE</version>
        </dependency>

org.springframework.data
spring数据共享
1.10.0.1发布

Spring引导自动配置通过功能检测工作,就像普通Spring在某些地方所做的那样(比如在Hibernate版本之间动态切换)

功能检测通过检查框架、库或JDK的一些已知类/方法/注释是否可用来工作。如果没有,则该功能不可用

SpringBoot也一样,它只是检查类是否可用。在您的情况下,它用于Spring数据REST和Spring安全性。用于调试Spring引导日志,其中记录了调试时未检测到的功能。这是用于故障排除的,如果某些功能不起作用,您可以看到库中缺少的部分

要禁用日志记录,只需在调试时不记录所有内容。

有如下解释:
“Spring Framework使用ASM查看字节码。在本例中,它发现了一个不在类路径上的注释。这意味着有关注释的元数据将不可用,仅此而已。当类实际加载时,JVM会删除注释,因为它不在类路径上。”

这些错误来自何方?您是如何配置日志记录的?在问题正文中添加了日志记录配置,您认为这有什么作用?
level=“debug”
?2015-03-07 13:34:42[main]调试o.s.c.t.c.AnnotationAttributesReadingVisitor-在读取注释元数据时未能分类加载类型。这是一个非致命错误,但某些注释元数据可能不可用。java.lang.ClassNotFoundException:org.springframework.security.config.annotation.web.configuration.EnableWebSecuritySpring引导需要检测类路径上的内容,以便检查某些类是否存在。如果是,则会添加配置,如果不是,则会收到调试消息。这是Spring Boot检测问题的唯一方法
       <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>1.10.0.RELEASE</version>
        </dependency>