不满足的依赖关系 - 创建 Bean 时出错

我按照本教程创建了简单的 JMS 相关应用程序,但我不断收到异常(下面粘贴了堆栈跟踪)


我尝试查看其他类似的线程,并且在许多地方看起来人们要求在界面中添加 @Repository 注释,但我的界面没有扩展任何存储库。


我的代码如下所示:


JmsClient.java


public interface JmsClient {

    public void send(String msg);

    public String receive();

}

JmsClientImpl.java


@Service

public class JmsClientImpl implements JmsClient{


    @Autowired

    JmsConsumer jmsConsumer;


    @Autowired

    JmsProducer jmsProducer;


    @Override

    public void send(String msg) {

        jmsProducer.send(msg);

    }


    @Override

    public String receive() {

        return jmsConsumer.receive();

    }


}

JmsConsumer.java


@Component

public class JmsConsumer {

    @Autowired

    JmsTemplate jmsTemplate;


    @Value("${jms.queue.destination}")

    String destinationQueue;


    public String receive(){

        return (String)jmsTemplate.receiveAndConvert(destinationQueue); 

    }

}

WebController.java


@RestController

public class WebController {


    @Autowired

    JmsClient jsmClient;


    @RequestMapping(value="/produce")

    public String produce(@RequestParam("msg")String msg){

        jsmClient.send(msg);

        return "Done";

    }


    @RequestMapping(value="/receive")

    public String receive(){

        return jsmClient.receive();

    }

}

JmsProducer.java


@Component

public class JmsProducer {

    @Autowired

    JmsTemplate jmsTemplate;


    @Value("${jms.queue.destination}")

    String destinationQueue;


    public void send(String msg){

        jmsTemplate.convertAndSend(destinationQueue, msg);

    }

}


大话西游666
浏览 223回答 1
1回答

开满天机

您遇到的问题是 Spring 无法实例化@Autowired您指定的类。它无法实例化这些类的原因是它找不到它们所依赖的类,如堆栈跟踪底部所示:Caused by: java.lang.NoClassDefFoundError: javax/jms/JMSContext&nbsp; &nbsp; at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_191]&nbsp; &nbsp; at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_191]&nbsp; &nbsp; at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_191]&nbsp; &nbsp; at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:668) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]&nbsp; &nbsp; ... 62 common frames omittedCaused by: java.lang.ClassNotFoundException: javax.jms.JMSContext&nbsp; &nbsp; at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_191]&nbsp; &nbsp; at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_191]&nbsp; &nbsp; at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_191]&nbsp; &nbsp; at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_191]&nbsp; &nbsp; ... 66 common frames omitted如此处所述,这意味着您需要获取可供应用程序加载的 JMS 库。在您的 pom 中,您没有指定spring-jms要使用的版本,因此您获得的版本可能不包含您需要的库。您可以更新您的 pom 以获得最新版本,如下所述:<!-- https://mvnrepository.com/artifact/org.springframework/spring-jms --><dependency>&nbsp; &nbsp; <groupId>org.springframework</groupId>&nbsp; &nbsp; <artifactId>spring-jms</artifactId>&nbsp; &nbsp; <version>5.1.5.RELEASE</version></dependency>或者,您可以通过将以下内容添加到您的 pom(在此处找到)来显式包含 JMS 库:<!-- https://mvnrepository.com/artifact/javax.jms/javax.jms-api --><dependency>&nbsp; &nbsp; <groupId>javax.jms</groupId>&nbsp; &nbsp; <artifactId>javax.jms-api</artifactId>&nbsp; &nbsp; <version>2.0.1</version></dependency>希望其中之一将允许 Spring 实例化所有 bean 并启动应用程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java